我试图让我的程序继续与GDB一起运行。 目前我有一个bash脚本,用我的程序启动GDB,当它崩溃时会打印回溯并再次启动GDB(无限循环)。
现在我为我的程序添加了一个信号处理程序,当处理程序从它们获取信号时,它会杀死特定的线程。现在我可以实现GDB不会因此而停止:
handle SIGSEGV nostop
但这引出了一个问题,即我没有得到GDB回溯,我想在不停止程序的情况下自动打印(或者至少自动继续)。
任何帮助将不胜感激!
答案 0 :(得分:4)
继续使用handle
来阻止来自SEGV
的普通停靠。然后设置一个符合你想要的捕获点:
(gdb) catch signal SIGSEGV
(gdb) commands
> silent # this bit is optional
> bt
> continue
> end
这将在SIGSEGV
上打印回溯,但不会干扰正常操作。您可能还需要handle SIGSEGV noprint
。