Debugging 无法从gdb回溯中获取任何信息
我有一个在linux 64位系统下运行的发行版服务器进程。它崩溃了,留下了一个coredump文件。我使用gdb进行如下调试: gdb svr核心转储文件 并得到以下回溯:Debugging 无法从gdb回溯中获取任何信息,debugging,gdb,backtrace,Debugging,Gdb,Backtrace,我有一个在linux 64位系统下运行的发行版服务器进程。它崩溃了,留下了一个coredump文件。我使用gdb进行如下调试: gdb svr核心转储文件 并得到以下回溯: (gdb) where #0 0x0000000000432691 in ?? () #1 0x00002b07655a50cc in ?? () #2 0x00002b07655a50c4 in ?? () #3 0x00007fff9fade920 in ?? () #4 0x0000000000439db3
(gdb) where
#0 0x0000000000432691 in ?? ()
#1 0x00002b07655a50cc in ?? ()
#2 0x00002b07655a50c4 in ?? ()
#3 0x00007fff9fade920 in ?? ()
#4 0x0000000000439db3 in ?? ()
#5 0x00007fff9fade910 in ?? ()
#6 0x00007fff9fade910 in ?? ()
#7 0x00007fff9fade8e0 in ?? ()
#8 0x00000000004663e2 in ?? ()
#9 0x00007fff9fade910 in ?? ()
#10 0x00007fff9fade910 in ?? ()
#11 0x00007fff9fade930 in ?? ()
#12 0x0000000000605108 in ?? ()
#13 0x00002b07655a274c in ?? ()
#14 0x0000000000ebc678 in ?? ()
#15 0x169f49f100000001 in ?? ()
#16 0x00000000021dc6c0 in ?? ()
#17 0x00002b07655a284c in ?? ()
#18 0x00002b07655a27dc in ?? ()
#19 0x00007fff9fade960 in ?? ()
#20 0x000000000043a03b in ?? ()
#21 0x00007fff9fade960 in ?? ()
#22 0x0000000000994d02 in ?? ()
#23 0x00000000000ecd57 in ?? ()
#24 0x00002b07655a274c in ?? ()
#25 0x00002b07655a274c in ?? ()
#26 0x00002b07655a27dc in ?? ()
#27 0x00007fff9fade980 in ?? ()
#28 0x000000000060a5eb in ?? ()
#29 0x000000009fadeb50 in ?? ()
#30 0x00002b07655a274c in ?? ()
#31 0x00007fff9fade9d0 in ?? ()
#32 0x000000000060a8f0 in ?? ()
#33 0x00007fff9fadeb50 in ?? ()
#34 0x00007fff9fadea10 in ?? ()
#35 0x00002b07655a274c in ?? ()
#36 0x00007fff9fadea10 in ?? ()
#37 0x000000009fade9d0 in ?? ()
#38 0x00007fff9fadeb58 in ?? ()
#39 0x0000000000000000 in ?? ()
地址信息无法通过addr2line进行分析,问题是什么?如何找到coredump的根本原因
谢谢 如果没有调试符号,调试程序是非常困难的。当您使用应用程序的发行版时,核心转储将不包含任何调试信息
我不确定,但如果你能将堆栈跟踪与你的应用程序的“.map”文件关联起来,你可能会有所收获。如果我处在您的位置,我会用调试符号(-g编译器标志)重新编译应用程序,然后继续调试。您是否在生成核心转储的机器上运行GDB 为了使GDB正确地重建崩溃堆栈跟踪,它必须能够访问崩溃时使用的确切二进制文件(否则会产生垃圾) 实现这一点的最简单方法是在生产它的机器上分析核心。如果不可行,则必须将所有共享库复制到服务器上的
/tmp/solib/
(保留路径,因此,例如/lib/libc.so.6
进入服务器上的/tmp/solib/libc.so.6
),然后在加载内核之前使用GDB设置服务器上的solib绝对前缀/tmp/solib
命令。例如
gdb -ex 'set solib-absolute-prefix /tmp/solib-on-server' \
-ex 'core /path/to/core' /path/to/executable
程序是用-g标志编译的吗?确保你没有剥离你的可执行文件。