【发布时间】:2012-01-17 16:01:41
【问题描述】:
将核心转储加载到 GDB 时,会显示它自动崩溃的原因。例如
程序以信号 11 终止,分段错误。
有什么方法可以重新获取信息吗? 问题是,我正在编写一个需要这些信息的脚本。但是如果信号只有在加载核心转储后才可用,我以后就无法访问信息了。
这么重要的功能真的没有命令吗?
【问题讨论】:
标签: linux debugging gdb coredump
将核心转储加载到 GDB 时,会显示它自动崩溃的原因。例如
程序以信号 11 终止,分段错误。
有什么方法可以重新获取信息吗? 问题是,我正在编写一个需要这些信息的脚本。但是如果信号只有在加载核心转储后才可用,我以后就无法访问信息了。
这么重要的功能真的没有命令吗?
【问题讨论】:
标签: linux debugging gdb coredump
打印关于最后一个信号执行的信息
p $_siginfo
【讨论】:
Unable to read siginfo
如果你知道核心文件名是什么,你可以发出target core命令重新指定目标核心文件:
(gdb) target core core.8577
[New LWP 8577]
Core was generated by `./fault'.
Program terminated with signal 11, Segmentation fault.
#0 0x080483d5 in main () at fault.c:10
10 *ptr = '\123';
(gdb)
至于隐含的问题,info last signal 命令是什么?,我不知道。好像没有。
核心文件名可以通过命令info target获取:
(gdb) info target
Symbols from "/home/wally/.bin/fault".
Local core dump file:
`/home/wally/.bin/core.8577', file type elf32-i386.
0x00da1000 - 0x00da2000 is load1
0x08048000 - 0x08049000 is load2
...
0xbfe8d000 - 0xbfeaf000 is load14
Local exec file:
`/home/wally/.bin/fault', file type elf32-i386.
Entry point: 0x8048300
0x08048134 - 0x08048147 is .interp
0x08048148 - 0x08048168 is .note.ABI-tag
0x08048168 - 0x0804818c is .note.gnu.build-id
0x0804818c - 0x080481ac is .gnu.hash
0x080481ac - 0x080481fc is .dynsym
0x080481fc - 0x08048246 is .dynstr
...
【讨论】:
info target 显示可执行文件和核心文件名,以及更多信息。也许这样可以?