如何在发生分段错误之前用gdb重新运行程序?

MKo*_*MKo 43 gdb

我的程序有一个分段故障问题,但它很少出错(一次20次或更多次),并且要在GDB中调试它,我需要手动重新运行程序,直到出现分段故障(在重新运行半天之后)失败:().

所以问题是,有没有办法告诉GDB重新运行程序,直到一些段错误?

bor*_*ble 66

在触发run命令的程序出口处放置一个断点,不要忘记set pagination off.有关设置命令的信息,请参阅gdb文档的" 断点命令列表"部分.简而言之:

set pagination off
break _exit
commands
run
end
Run Code Online (Sandbox Code Playgroud)

在该commands行之后,您将看到输入接下来的两行作为到达断点时要执行的命令.

  • 在退出函数上放置一个断点,"break exit commands run end":) (12认同)
  • the answer seems to be "set pagination off" in gdb (5认同)
  • @montefuscolo如果子进程干净地退出,这将运行并退出,如果它是segfaults,则将你转储到交互式lldb:"lldb -o run -b/path/to/binary - args args args",这样你就可以将它包装成一个shell循环以获得所需的效果."而lldb -o run -b/path/to/binary - args args args; do sleep 1; done" (3认同)

Ole*_*lov 10

(gdb) set pagination off
(gdb) break exit
(gdb) commands
>run
>end
(gdb) run
Run Code Online (Sandbox Code Playgroud)