[Bug libbacktrace/112263] [C++23] std::stacktrace does not identify symbols in shared library
vincenzo.innocente at cern dot ch
gcc-bugzilla@gcc.gnu.org
Wed Nov 1 11:16:38 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112263
--- Comment #5 from vincenzo Innocente <vincenzo.innocente at cern dot ch> ---
so if I add to
std::cout << std::stacktrace::current() << '\n';
I get what needed
Dl_info dlinfo;
for (auto & entry : std::stacktrace::current() ) {
dladdr((const void*)(entry.native_handle()),&dlinfo);
std::cout << dlinfo.dli_sname << ' ' << dlinfo.dli_fname <<'\n';
}
c++ -std=c++23 testStacktrace.cpp -lstdc++exp -g -DINLIB -fpic -shared -o
liba.so -ldl ; c++ -std=c++23 testStacktrace.cpp -lstdc++exp -g -DINMAIN -L.
-la -Wl,-rpath=. ; ./a.out
0# at :0
1# at :0
2# func(int) at
/data/user/innocent/MallocProfiler/tests/testStacktrace.cpp:44
3# main at /data/user/innocent/MallocProfiler/tests/testStacktrace.cpp:49
4# at :0
5# _start at :0
6#
_Z12nested_func2i ./liba.so
_Z11nested_funci ./liba.so
of course not de-mangled....
so is it a feature or a defect?
I'm not sure how the implementation works (did not look to the code)
dladdr can be slow and may "hang" in some situations.
so it would be useful to have an option that the "name" is not immediately
resolved
and have a function that returns the name from the native_handle
"asynchronously"
More information about the Gcc-bugs
mailing list