我正在使用gdb调试我的程序.我可以使用这些-x选项进行非交互式调试.
gdb -x gdbinit ./myprogram
Run Code Online (Sandbox Code Playgroud)
gdbinit文件内容:
handle SIGINT pass nostop noprint
handle SIGQUIT pass nostop noprint
handle SIGUSR1 pass nostop noprint
handle SIGUSR2 pass nostop noprint
run
backtrace
quit
Run Code Online (Sandbox Code Playgroud)
这四个信号不是由gdb处理的,因为我的程序需要它们才能正常工作.
该backtrace命令对于在崩溃后进行回溯非常有用.
该quit命令在程序执行后使gdb退出,即使它已崩溃.
我想只在程序成功完成后自动退出.在其他情况下,gdb应该可用于分析回溯和其他事情.
如果程序退出WITHOUT ERROR,gdb如何才能退出?
使用$_exitcode GDB便利变量.在上面的gdb脚本中,替换:
run
Run Code Online (Sandbox Code Playgroud)
有:
set $_exitcode = -1
run
if $_exitcode != -1
quit
end
Run Code Online (Sandbox Code Playgroud)
并删除最后的quit行应该工作.使用-1作为不可能的值起作用,因为在POSIX中只能使用退出状态的低8位.(见WEXITSTATUS()在等待(2) ).
要使用GDB Python API来完成同样的事情,请参阅此处.
| 归档时间: |
|
| 查看次数: |
1963 次 |
| 最近记录: |