我有一个程序偶尔会失败,但是会出现同样的错误。为了调试它,我想在GDB下运行它,直到它失败,设置断点并重新运行它。 我该怎么做:
gdb --args /path/to/program <program args>
但我无法在任何地方找到如何告诉GDB“100次运行此程序”。
答案 0 :(得分:6)
我能想到的最简单的解决方案是在无限循环中运行程序,直到失败或按 Ctrl + C 来打破循环。
(gdb) while 1
>run
>end
答案 1 :(得分:6)
此gdb脚本将运行程序100次,或直到它收到信号。如果程序因信号而停止,则$_siginfo
无效,如果程序退出则无效。据我所知,任何停止流程,包括断点,观察点和单步执行,都会将$_siginfo
设置为某些内容。
set $n = 100
while $n-- > 0
printf "starting program\n"
run
if $_siginfo
printf "Received signal %d, stopping\n", $_siginfo.si_signo
loop_break
else
printf "program exited\n"
end
end