Sysprogs forums › Forums › VisualGDB › Embedded Memory Explorer Name Demangling Fails
Tagged: Embedded memory explorer
- This topic has 1 reply, 2 voices, and was last updated 1 day, 2 hours ago by
support.
-
AuthorPosts
-
January 9, 2026 at 10:05 #37048
Dan712
ParticipantEmbedded Memory Explorer fails to Demangle some template names. I believe this may have to do with providing a class literal as a template type(C++20). arm-none-eabi-c++filt.exe in the GCC 14.2.1 toolchain properly decodes the following example Embedded Memory Explorer fails on:
_ZN3utl9SingletonIN3tsk18StaticFreeRTOSTaskIN9KeypadMCU11DevCtlrTaskELNS1_7Stack_tE512ELb0EEEXtlNS_13StringLiteralILj5EEEtlA5_cLc46ELc98ELc115ELc115EEEELh0EXtlNS_23StringLiteralUninferredILj100EEEtlA100_cLc118ELc105ELc114ELc116ELc117ELc97ELc108ELc32ELc118ELc111ELc105ELc100ELc32ELc75ELc101ELc121ELc112ELc97ELc100ELc77ELc67ELc85ELc58ELc58ELc75ELc101ELc121ELc112ELc97ELc100ELc66ELc111ELc111ELc116ELc84ELc97ELc115ELc107ELc58ELc58ELc112ELc111ELc115ELc116ELc66ELc111ELc111ELc116ELc73ELc110ELc105ELc116ELc40ELc41EEEEEnwEjas
utl::Singleton<tsk::StaticFreeRTOSTask<KeypadMCU::DevCtlrTask, (tsk::Stack_t)512, false>, utl::StringLiteral<5u>{char [5]{(char)46, (char)98, (char)115, (char)115}}, (unsigned char)0, utl::StringLiteralUninferred<100u>{char [100]{(char)118, (char)105, (char)114, (char)116, (char)117, (char)97, (char)108, (char)32, (char)118, (char)111, (char)105, (char)100, (char)32, (char)75, (char)101, (char)121, (char)112, (char)97, (char)100, (char)77, (char)67, (char)85, (char)58, (char)58, (char)75, (char)101, (char)121, (char)112, (char)97, (char)100, (char)66, (char)111, (char)111, (char)116, (char)84, (char)97, (char)115, (char)107, (char)58, (char)58, (char)112, (char)111, (char)115, (char)116, (char)66, (char)111, (char)111, (char)116, (char)73, (char)110, (char)105, (char)116, (char)40, (char)41}}>::operator new(unsigned int)
Could Sysprog either fix this or provide a way to plugin custom demanglers? A plugin method would be welcome as then the char arrays could be displayed as strings.
January 9, 2026 at 10:21 #37049support
KeymasterHi,
No problem, the demangler is already a separate DLL with a very simple interface (demangle.dll/demangle64.dll).
#include <cxxabi.h> #include <stdlib.h> extern "C" char *__declspec(dllexport) DemangleCXXName2(const char *pName) { int status = -1; return abi::__cxa_demangle(pName, 0, 0, &status); } extern "C" void __declspec(dllexport) FreeDemangledCXXName(char *pName) { free(pName); }You can build with MinGW using the following command line:
g++.exe demangle.cpp -o demangle.dll -shared -static-libgcc -static-libstdc++
We will update the version shipped with VisualGDB based on the latest MinGW toolchain in the final v6.1 release.
-
AuthorPosts
- You must be logged in to reply to this topic.