大约一周前,我开始在使用 GDB 从核心转储中获取体面的回溯时遇到问题。如果我在 GDB 中加载程序并让它崩溃,我可以得到一个很好的回溯。
这是我从核心转储中得到的:
(gdb) bt
#0 0x00007fd10ad42425 in ?? ()
#1 0x00007fd10ad45b8b in ?? ()
#2 0x0000000000000004 in ?? ()
#3 0x0000000000000005 in ?? ()
#4 0x00007ffff770887e in ?? ()
#5 0x0000000000000009 in ?? ()
#6 0x00007fd10ae87ea7 in ?? ()
#7 0x0000000000000003 in ?? ()
#8 0x00007ffff77072ba in ?? ()
#9 0x0000000000000006 in ?? ()
#10 0x00007fd10ae87eab in ?? ()
#11 0x0000000000000002 in ?? ()
#12 0x00007ffff77072ce in ?? ()
#13 0x0000000000000002 in ?? ()
#14 0x00007fd10ae85b82 in ?? ()
#15 0x0000000000000001 in ?? ()
#16 0x00007fd10ae87ea7 in ?? ()
#17 0x0000000000000003 in ?? ()
#18 0x00007ffff77072b4 in ?? ()
#19 0x000000000000000c in ?? ()
#20 0x00007fd10ae87eab in ?? ()
#21 0x0000000000000002 in ?? ()
#22 0x0000000000000020 in ?? ()
#23 0x0000000000000000 in ?? ()
(gdb)
无论是 SIGSEGV、SIGABRT(未处理的异常还是断言/验证),都会发生这种情况。
我正在使用以下编译器标志进行编译:
g++ -Wall -Wextra -g -ggdb -std=gnu++0x -rdynamic -pthread -O0
我真的想不出有什么改变导致了这种情况。有任何想法吗?