Tôi đang gặp một lỗi liên kết khá dài và khó hiểu, và sẽ rất thích nếu tôi có thể dán nó vào hộp văn bản nào đó trên trang web nào đó và bỏ tên cho tôi.
Có ai biết về một dịch vụ như vậy không?
Tôi đang gặp một lỗi liên kết khá dài và khó hiểu, và sẽ rất thích nếu tôi có thể dán nó vào hộp văn bản nào đó trên trang web nào đó và bỏ tên cho tôi.
Có ai biết về một dịch vụ như vậy không?
Câu trả lời:
Tôi đã tạo một dịch vụ trực tuyến như vậy: https://demangler.com
Đây là một demangler ký hiệu gcc c ++. Bạn chỉ cần sao chép một dấu vết ngăn xếp hoặc đầu ra của nm vào một hộp văn bản và nó sẽ trả về đầu ra với các tên đã được gỡ bỏ.
@Update: Nó bây giờ cũng phân loại các biểu tượng MSVC và Java.
white-space: normal
hoặc tương tự với thẻ responseSection <pre> (và có thể thêm số dòng) không? Đầu ra dài một dòng hiện không thể đọc được.
Điều này có thể hơi muộn, nhưng tôi đã tạo một cái dựa trên câu hỏi này. Nó hoạt động với các đầu vào mà tôi đã thử, hỗ trợ g ++ và msvc ++ thông qua __cxa_demangle và __unDName, được biên dịch sang Javascript qua Emscripten. Hy vọng điều này sẽ giúp ai đó: c ++ filtjs
Chỉnh sửa: Đã khắc phục sự cố thoát
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
.
Hầu hết (nếu không phải tất cả) các trình biên dịch C ++ đi kèm với c++filt
công cụ thực hiện chính xác những gì bạn đang tìm kiếm.
Nếu bạn muốn nó bằng cách nhấp chuột ... thì hãy viết GUI cho nó;)
objdump -dr ./AClass.o | c++filt | less
(disassembler) hoặc nm ./AClass.o | c++filt | less
(danh sách các biểu tượng bên trong tập tin đối tượng)
Có hai giải pháp sao chép và dán trực tuyến:
Nếu bạn chỉ cần hỗ trợ cho GCC và Clang, bạn cũng có tùy chọn sử dụng Coliru , đây có lẽ là trình biên dịch C ++ trực tuyến linh hoạt nhất .
Điều này không hoàn toàn đơn giản như cắt, dán và nhấp - nhưng không khó hơn nhiều - và có vẻ như không có vấn đề gì với các thông số mẫu như đã nói ở trên. Bạn chỉ cần sửa đổi dòng lệnh để chạy một cái gì đó như sau:
cat main.cpp | c++filt -t
Xem nó trực tiếp với ví dụ này có hình tam giác:
_Z6kernelIfLj3EEvPT_5arrayIPKS0_XT0_EES5_S2_IjXT0_EES6_S0_
đến:
void kernel<float, 3u>(float*, array<float const*, 3u>, array<float const*, 3u>, array<unsigned int, 3u>, array<unsigned int, 3u>, float)
^^^^^^^^^^^