从 backtrace_symbols 收到的 c++ 符号在 g++ 中不显示函数
c++ symbols received from backtrace_symbols does not show function in g++
我正在尝试以编程方式在代码中打印回溯,使用 -g 编译我的所有源代码,并与之链接,我还添加了 fvisibility=internal。
但是当我调用符号列表时,我所有的代码看起来像:
模块()[0x424b69]
为什么函数名没有出现在大括号中,我还应该添加什么其他可能的标志?
谢谢。
你应该使用
-rdynamic
类似于:
g++ -g -rdynamic main.cpp
来自http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html:
-rdynamic
Pass the flag -export-dynamic to the ELF linker, on targets that support it. This instructs the linker to add all symbols, not only
used ones, to the dynamic symbol table. This option is needed for some
uses of dlopen or to allow obtaining backtraces from within a program.
我正在尝试以编程方式在代码中打印回溯,使用 -g 编译我的所有源代码,并与之链接,我还添加了 fvisibility=internal。
但是当我调用符号列表时,我所有的代码看起来像:
模块()[0x424b69]
为什么函数名没有出现在大括号中,我还应该添加什么其他可能的标志?
谢谢。
你应该使用
-rdynamic
类似于:
g++ -g -rdynamic main.cpp
来自http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html:
-rdynamic
Pass the flag -export-dynamic to the ELF linker, on targets that support it. This instructs the linker to add all symbols, not only used ones, to the dynamic symbol table. This option is needed for some uses of dlopen or to allow obtaining backtraces from within a program.