MCPcopy Create free account
hub / github.com/KDAB/GammaRay / maybeDemangleName

Function maybeDemangleName

core/execution.cpp:147–178  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145
146#if !defined(USE_BACKWARD_CPP) && defined(HAVE_BACKTRACE)
147static QString maybeDemangleName(char *name)
148{
149#ifdef HAVE_CXA_DEMANGLE
150#if defined(Q_OS_MACOS)
151 const char MANGLED_START[] = " _Z";
152 const char MANGLED_END[] = " ";
153#else
154 const char MANGLED_START[] = "(_Z";
155 const char MANGLED_END[] = "+";
156#endif
157
158 auto mangledNameStart = strstr(name, MANGLED_START);
159 if (mangledNameStart) {
160 ++mangledNameStart;
161 const auto mangledNameEnd = strstr(mangledNameStart, MANGLED_END);
162 if (mangledNameEnd) {
163 int status;
164 *mangledNameEnd = 0;
165 auto demangled = abi::__cxa_demangle(mangledNameStart, nullptr, nullptr, &status);
166 *mangledNameEnd = MANGLED_END[0];
167 if (status == 0 && demangled) {
168 QString ret = QString::fromLatin1(name, mangledNameStart - name)
169 + QString::fromLatin1(demangled)
170 + QString::fromLatin1(mangledNameEnd);
171 free(demangled);
172 return ret;
173 }
174 }
175 }
176#endif
177 return QString::fromLatin1(name);
178}
179#endif
180
181Execution::ResolvedFrame Execution::resolveOne(const Execution::Trace &trace, int index)

Callers 2

resolveOneMethod · 0.85
resolveAllMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected