I have a program which fails sporadically, but with the same error. To debug it I\'d like to run it under GDB until it fails, set breakpoints and re-run it. what do I do:
The simplest solution I can think of is to run program in infinite while loop until it fails or you press Ctrl+C to break the loop.
(gdb) while 1
>run
>end
This gdb script will run the program 100 times, or until it receives a signal. $_siginfo
is non-void if the program is stopped due to a signal, and is void if the program exited. As far as I can tell, any stop of the process, including breakpoints, watchpoints, and single-stepping, will set $_siginfo
to something.
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