GDB 回溯而不停止

use*_*821 4 c++ multithreading gdb signals

我正在尝试让我的程序与GDB一起连续运行。目前我有一个 bash 脚本,它用我的程序启动 GDB,当它崩溃时,它会打印回溯并再次启动 GDB(无限循环)。

现在,我为我的程序添加了一个信号处理程序,当处理程序从特定线程获取信号时,它会杀死特定线程。现在我可以通过这样做来实现 GDB 不会停止:

handle SIGSEGV nostop
Run Code Online (Sandbox Code Playgroud)

但这导致了我没有得到 GDB 回溯的问题,我想在不停止程序(或至少自动继续)的情况下自动打印它。

任何帮助,将不胜感激!

Tom*_*mey 6

继续用handle普通止损来压制SEGV。然后设置一个执行您想要的操作的捕获点:

(gdb) catch signal SIGSEGV
(gdb) commands
    >   silent  # this bit is optional
    >   bt
    >   continue
    >   end
Run Code Online (Sandbox Code Playgroud)

这将打印回溯SIGSEGV,但不会干扰正常操作。您可能还想要handle SIGSEGV noprint