使用backtrace_symbols获得异常时堆栈打印的问题
我编写了一个小程序,希望使用backtrace 和 backtrace_symbols 获得程序异常时的堆栈打印。
但结果我获得的是这些:
./test(__gxx_personality_v0+0x3d9) [0x8048c01]
./test [0x8048dfe]
[0x126440]
./test(__gxx_personality_v0+0xdb) [0x8048903]
./test(__gxx_personality_v0+0x11c) [0x8048944]
/lib/libc.so.6(__libc_start_main+0xdc) [0x6a5e8c]
./test(__gxx_personality_v0+0x49) [0x8048871]
这种信息对我来说没什么用,我用google查找后发现需要在编译时增加一个开关 -rdynamic 。
于是我加了,编译命令如下:
g++ -c --rdynamic -o ../source/test.o ...
但是获得结果没有任何改变,没有出现一个我自己的函数名,全都是该死的__gxx_personality_v0。
请问我该怎么办才能让这个开关生效?