接收信号时如何自动进行gdb核心转储

How to automate gdb core dumping when receiving signal

我想避免在应用程序获得 SIGSEGV 后忘记生成核心转储文件的情况,您离开 gdb 并丢失有关该崩溃的信息。

我正在寻找的是 commands 的模拟(用于断点),因此我可以编写一组命令在我的应用程序收到信号时执行。

在每个命令之后执行的某些事情也可以工作,就像 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