C++ 不停止的GDB回溯跟踪
我试图让我的程序与GDB一起连续运行。 目前我有一个bash脚本,它用我的程序启动GDB,当它崩溃时,它会打印回溯并再次启动GDB(无止境循环) 现在,我为我的程序添加了一个信号处理程序,当处理程序从特定线程获得信号时,它会杀死这些线程。现在我可以实现GDB不会停止这样做:C++ 不停止的GDB回溯跟踪,c++,multithreading,gdb,signals,C++,Multithreading,Gdb,Signals,我试图让我的程序与GDB一起连续运行。 目前我有一个bash脚本,它用我的程序启动GDB,当它崩溃时,它会打印回溯并再次启动GDB(无止境循环) 现在,我为我的程序添加了一个信号处理程序,当处理程序从特定线程获得信号时,它会杀死这些线程。现在我可以实现GDB不会停止这样做: handle SIGSEGV nostop 但这导致了一个问题,我没有得到一个GDB回溯,我想在不停止程序的情况下自动打印(或者至少自动继续) 任何帮助都将不胜感激 继续使用handle从SEGV抑制普通停止。然后设置一个
handle SIGSEGV nostop
但这导致了一个问题,我没有得到一个GDB回溯,我想在不停止程序的情况下自动打印(或者至少自动继续)
任何帮助都将不胜感激 继续使用
handle
从SEGV
抑制普通停止。然后设置一个符合您要求的捕捉点:
(gdb) catch signal SIGSEGV
(gdb) commands
> silent # this bit is optional
> bt
> continue
> end
这将在
SIGSEGV
上打印回溯,但不会干扰正常操作。您可能还希望处理SIGSEGV noprint
,因为您已经能够处理自己的SIGSEGV(从而颠覆GDB),将回溯转储放在SIGSEGV hander中而不是依赖外部工具是否有意义?我已经在我的处理程序中打印回溯,但它们没有GDB的详细