C语言 了解 gdb 核心打印的元素



我生成了一个核心。/var/log/messages 显示以下行:

Jan 29 07:50:40 NetAcc-02 kernel: LR.exe[15326]: segfault at 51473861 ip 081e2dba sp 00240030 error 4 in LR.exe[8048000+34c000]
Jan 29 07:50:52 NetAcc-02 abrt[20696]: saved core dump of pid 15252 (/home/netacc/active/LR.exe) to /var/spool/abrt/ccpp-2015-01-29-07:50:40-15252.new/coredump (1642938368 bytes)
Jan 29 07:50:52 NetAcc-02 abrtd: Directory 'ccpp-2015-01-29-07:50:40-15252' creation detected
Jan 29 07:50:54 NetAcc-02 abrtd: Executable '/home/netacc/active/LR.exe' doesn't belong to any package
Jan 29 07:50:54 NetAcc-02 abrtd: Corrupted or bad dump /var/spool/abrt/ccpp-2015-01-29-07:50:40-15252 (res:2), deleting

最后一行是否意味着核心已损坏?因为我的核心文件的bt似乎已损坏:

#0  0x081e2dba in CfaPepDecision (pBuf=0xa0d6735, pIp=0x5147384d, u2DirectFlag=1, ppepserver=0x67684e6f, paccl=0x45517377, pPepMode=0x6a31396c "") at /home/TAN/release/rel/idu-sw/pep/pep/src/pepcfa.c:498
#1  0x52367331 in ?? ()
#2  0x0a0d6735 in gProfileVsatTable ()
#3  0x5147384d in ?? ()
#4  0x75417875 in ?? ()
#5  0x38000200 in ?? ()

奇怪的是,gProfileVsatTable是一个全局数组!

地址pIp = 0x5147384d在 gdb 中超出范围。

任何输入都是有帮助的。

因为我的核心文件的bt似乎已损坏:

这通常是分析错误二进制文件的结果。像这样调用 GDB:

gdb /home/netacc/active/LR.exe 
  /var/spool/abrt/ccpp-2015-01-29-07:50:40-15252.new/coredump

确保您自 1 月 29 日 07:50:52 以来更新二进制文件。特别是,请确保您在崩溃后没有使用不同的选项重建二进制文件。

最新更新