如何在GDB中打印最后收到的信号?

当一个核心转储加载到GDB时,会自动崩溃的原因被显示出来。 例如

程序终止信号11,分段故障。

有什么方法可以再次获取信息吗? 事情是,我正在写一个需要这些信息的脚本。 但是,如果信号仅在加载核心转储和amd后才可用,那么稍后将无法访问信息。

这样一个重要的function真的没有命令吗?

如果您知道核心文件名是什么,您可以发出重新指定目标核心文件的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 ... 

打印关于最后信号执行的信息

p $ _siginfo