如何在GDB中多次重新运行程序?

时间:2016-05-18 12:39:13

标签: debugging gdb

我有一个程序偶尔会失败,但是会出现同样的错误。为了调试它,我想在GDB下运行它,直到它失败,设置断点并重新运行它。 我该怎么做:

gdb --args /path/to/program <program args>

但我无法在任何地方找到如何告诉GDB“100次运行此程序”。

2 个答案:

答案 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