상당히 길고 혼란스러운 링크 오류가 발생하고 있습니다. 일부 웹 사이트의 일부 텍스트 상자에 붙여넣고 이름이 엉키지 않게하면 좋을 것입니다.
누구든지 그러한 서비스를 알고 있습니까?
상당히 길고 혼란스러운 링크 오류가 발생하고 있습니다. 일부 웹 사이트의 일부 텍스트 상자에 붙여넣고 이름이 엉키지 않게하면 좋을 것입니다.
누구든지 그러한 서비스를 알고 있습니까?
답변:
나는 그러한 온라인 서비스를 만들었습니다. https://demangler.com
이것은 gcc C ++ 기호 demangler입니다. 스택 추적 또는 nm의 출력을 텍스트 상자에 복사하면 이름이 demangled 된 출력이 반환됩니다.
@Update : 이제 MSVC 및 Java 기호도 제거됩니다.
white-space: normal
responseSection <pre> 태그 를 추가 하거나 이와 유사하게 해주시겠습니까 (줄 번호를 추가 할 수도 있음)? 긴 한 줄 출력은 현재 읽을 수 없습니다.
이것은 조금 늦을 수도 있지만이 질문을 기반으로 하나를 만들었습니다. 내가 시도한 입력으로 작동하고, Emscripten을 통해 Javascript로 컴파일 된 __cxa_demangle 및 __unDName을 통해 g ++ 및 msvc ++를 지원합니다. 이것이 누군가에게 도움이 되기를 바랍니다 : c ++ filtjs
편집 : 이스케이프 문제 수정
??_R3?$KxSet@V?$KxSpe@DI@@I@@8
.을 참조하십시오 .
대부분의 (전부는 아니지만) C ++ 컴파일러는 c++filt
사용자가 찾고있는 것을 정확하게 수행하는 도구 와 함께 제공됩니다 .
마우스 클릭으로 원하는 경우 ... 그에 대한 GUI를 작성하십시오;)
objdump -dr ./AClass.o | c++filt | less
(디스어셈블러) 또는 nm ./AClass.o | c++filt | less
(객체 파일 내부의 기호 목록)
두 가지 복사 및 붙여 넣기 온라인 솔루션이 있습니다.
GCC 및 Clang에 대한 지원 만 필요한 경우 가장 다재다능한 온라인 C ++ 컴파일러 인 Coliru 를 사용할 수도 있습니다 .
이것은 잘라 내기, 붙여 넣기 및 클릭만큼 간단하지는 않지만 그다지 어렵지는 않으며 위에서 언급 한대로 템플릿 매개 변수에 문제가없는 것처럼 보입니다. 다음과 같이 실행하려면 명령 줄을 수정하기 만하면됩니다.
cat main.cpp | c++filt -t
다음 예제 를 통해 실시간으로 확인하십시오 .
_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)
^^^^^^^^^^^