我已经编写了一个.gdbinit
文件,其中包含要由gdb
执行的命令:
file program
run arg1 arg2
bt
quit
问题在于,如果quit
崩溃,program
会成功执行,如果program
成功完成,则不会执行。
无论哪种情况,我都需要quit
才能完成。如何解决?
答案 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的文档。