ฉันได้รับข้อผิดพลาดในการเชื่อมโยงที่ค่อนข้างยาวและสับสนและจะชอบมากถ้าฉันสามารถวางลงในกล่องข้อความบนเว็บไซต์บางแห่งและมีชื่อที่ไม่สับสนสำหรับฉัน
มีใครรู้จักบริการดังกล่าวบ้าง?
ฉันได้รับข้อผิดพลาดในการเชื่อมโยงที่ค่อนข้างยาวและสับสนและจะชอบมากถ้าฉันสามารถวางลงในกล่องข้อความบนเว็บไซต์บางแห่งและมีชื่อที่ไม่สับสนสำหรับฉัน
มีใครรู้จักบริการดังกล่าวบ้าง?
คำตอบ:
ฉันได้สร้างบริการออนไลน์ดังกล่าว: https://demangler.com
นี่คือ demangler สัญลักษณ์ gcc c ++ คุณเพียงแค่คัดลอกการติดตามสแต็กหรือเอาต์พุตของ nm ลงในกล่องข้อความและจะส่งคืนผลลัพธ์โดยมีการแยกชื่อออก
@Update: ตอนนี้มันแยกสัญลักษณ์ MSVC และ Java ด้วย
white-space: normal
หรือคล้ายกับแท็ก responseSection <pre> (และอาจเพิ่มหมายเลขบรรทัด) ได้ไหม เอาต์พุตบรรทัดเดียวแบบยาวไม่สามารถอ่านได้ในขณะนี้
อาจจะช้าไปหน่อย แต่ฉันสร้างคำถามขึ้นมาจากคำถามนี้ ใช้งานได้กับอินพุตที่ฉันพยายามรองรับ g ++ และ msvc ++ ผ่าน __cxa_demangle และ __unDName ที่คอมไพล์เป็น Javascript ผ่าน Emscripten หวังว่านี่จะช่วยใครบางคน: c ++ filtjs
แก้ไข: แก้ไขปัญหาการหลบหนี
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
เครื่องมือของคุณดูเหมือนจะไม่หลบหนีวงเล็บดู
คอมไพเลอร์ C ++ ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) มาพร้อมกับc++filt
เครื่องมือที่ทำสิ่งที่คุณต้องการได้อย่างแม่นยำ
ถ้าคุณต้องการเมื่อคลิกเมาส์ ... ให้เขียน GUI ให้ดี;)
objdump -dr ./AClass.o | c++filt | less
(disassembler) หรือnm ./AClass.o | c++filt | less
(รายการสัญลักษณ์ภายในไฟล์อ็อบเจ็กต์)
มีโซลูชันออนไลน์สองแบบคัดลอกและวาง:
ถ้าคุณเพียงต้องการการสนับสนุนสำหรับ GCC และเสียงดังกราวคุณยังมีตัวเลือกของการใช้Coliruซึ่งอาจเป็นส่วนใหญ่อเนกประสงค์ออนไลน์ c ++ คอมไพเลอร์
สิ่งนี้ไม่ง่ายเหมือนการตัดวางและคลิก แต่ก็ไม่ยากเกินไปและดูเหมือนว่าจะไม่มีปัญหากับพารามิเตอร์เทมเพลตตามที่ระบุไว้ข้างต้น คุณต้องแก้ไขบรรทัดคำสั่งเพื่อเรียกใช้สิ่งนี้:
cat main.cpp | c++filt -t
ดูสดด้วยตัวอย่างนี้ซึ่ง demangles:
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
ถึง:
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^
FYI นอกจากนี้ยังมีอัญมณีทับทิมสำหรับแยก Borland / MS / ชื่อที่แหลกเหลว: unmangler