我正在使用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如何退出?
答案 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。