首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GDB中打印最后接收到的信号?

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

Stack Overflow用户
提问于 2012-01-17 16:01:41
回答 2查看 7.9K关注 0票数 13

当将核心转储加载到GDB中时,会显示其自动崩溃的原因。例如

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

有什么办法能再得到这些信息吗?问题是,我正在写一个需要这些信息的脚本。但是,如果信号只有在加载核心转储之后才可用,那么稍后我就无法访问这些信息。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-17 19:56:05

如果您知道核心文件名是什么,您可以发出target core命令,该命令响应目标核心文件:

代码语言:javascript
复制
(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获得核心文件的名称

代码语言:javascript
复制
(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
...
票数 3
EN

Stack Overflow用户

发布于 2012-01-22 22:34:56

打印有关上一次信号执行的信息

代码语言:javascript
复制
p $_siginfo
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8897761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档