From 17fb589415300d7debb5512874a0437470785edb Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Tue, 5 Mar 2019 20:43:47 +0100 Subject: [PATCH] Try dladdr() resolution if libbacktrace fails. --- client/TracyCallstack.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/client/TracyCallstack.cpp b/client/TracyCallstack.cpp index af7a3dff..d426c716 100644 --- a/client/TracyCallstack.cpp +++ b/client/TracyCallstack.cpp @@ -322,7 +322,21 @@ static int FastCallstackDataCb( void* data, uintptr_t pc, const char* fn, int li } else { - *(char*)data = '\0'; + const char* symname = nullptr; + auto vptr = (void*)pc; + Dl_info dlinfo; + if( dladdr( vptr, &dlinfo ) ) + { + symname = dlinfo.dli_sname; + } + if( symname ) + { + strcpy( (char*)data, symname ); + } + else + { + *(char*)data = '\0'; + } } return 1; }