gdb:只在没有崩溃的情况下自动退出

时间:2012-11-08 16:14:54

标签: debugging gdb

我正在使用gdb调试我的程序。我可以使用-x选项进行非交互式调试。

gdb -x gdbinit ./myprogram

gdbinit档案的内容:

handle SIGINT pass nostop noprint
handle SIGQUIT pass nostop noprint
handle SIGUSR1 pass nostop noprint
handle SIGUSR2 pass nostop noprint
run
backtrace
quit

gdb不处理这四个信号,因为我的程序需要它们才能正常工作。

backtrace命令对于在崩溃后进行回溯非常有用。

quit命令在程序执行后使gdb退出,即使它已崩溃。

我想只在程序成功完成后自动退出。在其他情况下,gdb应该可用于分析回溯和其他事情。

如果程序在没有错误的情况下退出,gdb如何退出?

1 个答案:

答案 0 :(得分:6)

使用$_exitcode GDB convenience variable。在上面的gdb脚本中,替换:

run

使用:

set $_exitcode = -1
run
if $_exitcode != -1 
    quit
end

并删除最后的quit行应该有效。使用-1作为不可能的值是有效的,因为在POSIX中只能使用退出状态的低8位。 (请参阅wait(2)中的WEXITSTATUS())。

要使用GDB Python API完成同样的事情,请参阅here