BoB*_*ish 16
我试过(在Bash中):
while true ; do gdb -ex run a.out -ex quit ; done ;
Run Code Online (Sandbox Code Playgroud)
不幸的是,结果是相当棘手,但它确实自动运行,当程序崩溃时(我用一个导致SIGABRT的旧程序测试),gdb问"程序正在运行.无论如何退出?"(y或者n)",所以只要点击n.
我遇到了同样的问题,并提出了我认为停止BoBTFish建议的无限循环的一种相当不错的方法.
while true
您可以使用虚拟文件的存在来控制循环,而不是循环,例如:
touch loopfile; while [ -f loopfile ] ; do gdb -ex run a.out -ex quit ; done ;
Run Code Online (Sandbox Code Playgroud)
当您想要停止无限调试会话时,您可以在同一目录中打开一个新终端rm loopfile
,或者您可以通过中断control-c
并loopfile
从内部删除来退出同一终端gdb
:
^CQuit
A debugging session is active.
Inferior 1 [process 11136] will be killed.
Quit anyway? (y or n) n
Not confirmed.
(gdb) shell rm loopfile
(gdb) quit
A debugging session is active.
Inferior 1 [process 11136] will be killed.
Quit anyway? (y or n) y
Run Code Online (Sandbox Code Playgroud)
希望这对未来的某些人有用,它似乎是调试间歇性问题的一种很好的(如果是hackish)方式.