在.gdbinit中退出

时间:2018-07-14 21:19:21

标签: gdb

我已经编写了一个.gdbinit文件,其中包含要由gdb执行的命令:

file program
run arg1 arg2
bt
quit

问题在于,如果quit崩溃,program会成功执行,如果program成功完成,则不会执行。

无论哪种情况,我都需要quit才能完成。如何解决?

1 个答案:

答案 0 :(得分:1)

  

问题在于,如果程序崩溃,退出成功执行,如果程序成功完成,退出将不执行。

这是因为如果程序成功完成,bt会导致错误。它导致No stack错误:

.gdbinit:3: Error in sourced command file:
No stack.

和后续的quit由于错误而没有执行。

您可以使用$_isvoid$_exitsignal变量来修复.gdbinit脚本:

file program
run arg1 arg2
if $_isvoid ($_exitsignal)
 echo The program has exited\n
 else
 echo The program has signalled\n
 bt
end
quit

请参阅Convenience Variables的文档。