使gdb在成功终止时自动退出?

我使用一个调试脚本来连续运行与调试器相关的几个相关进程.我正在使用-x自动执行几个命令(如运行).调试过程成功终止时,如何自动退出gdb?在命令文件中添加一个退出命令将导致该命令不仅在成功终止时被处理,而且当错误也发生时(当我宁愿在那一点上接管时).

这是一个解释发生了什么:

+ gdb -return-child-result -x gdbbatch --args ./mkfs.cpfs /dev/loop0
GNU gdb (GDB) 7.1-ubuntu
Reading symbols from /home/matt/cpfs/mkfs.cpfs...done.

Program exited normally.
Breakpoint 2 at 0x805224f: file log.c, line 32.
(gdb)

gdbbatch的内容:

start
b cpfs_log if level >= WARNING
最佳答案
当程序成功终止时,gdb设置$_exitcode.您可以利用这一点 – 在脚本开始时将其设置为不太可能的值,如果已更改,则仅在退出时退出:

set $_exitcode = -999
# ...
run
# ...
if $_exitcode != -999
  quit
end

(将$_exitcode设置为不可能的值有点丑,但是如果程序没有终止,它根本不会被定义,并且似乎没有任何明显的方式来询问“这个变量是否被定义?在条件的.)

转载注明原文:使gdb在成功终止时自动退出? - 代码日志