我想避免在应用程序收到 SIGSEGV
后忘记生成核心转储文件,离开 gdb 并丢失有关该崩溃的信息的情况。
我正在寻找的是与命令
(用于断点)类似的东西,这样我就可以编写一组命令,以便在我的应用收到信号时执行。
在每个命令之后执行的某些东西也可以工作,就像 display
一样。这里的重点是我找不到如何检查是否生成了 X 信号。
起初,我更喜欢它是在 gdb 中配置的东西。就此而言,我的意思是不必更改 app/gdb 的启动方式。
提前致谢。
最佳答案
如果你的 gdb 支持 catch signal
命令,您可以像编写断点一样编写脚本。
$ gdb ab
(gdb) list
1 main()
2 {
3 abort();
4 }
(gdb) catch signal SIGABRT
Catchpoint 1 (signal SIGABRT)
(gdb) commands
Type commands for breakpoint(s) 1, one per line.
>generate-core-file
>end
(gdb) run
Catchpoint 1 (signal SIGABRT), 0x00007ffff7a4692f in raise ()
from /lib64/libc.so.6
Saved corefile core.2097
关于c++ - 接收信号时如何自动进行gdb核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301688/