问题
我正在尝试让gdb自动调试我正在查看的c10,000
程序,其中由于已知错误而发生崩溃的可能性很小,但确实有可能(即:有机会)。我与另一位工程师争辩说它足够严重,可以解决,所以我需要实际导致崩溃发生,以证明花时间修复它是合理的。为了加快测试速度,我计划编写一个脚本,让应用程序在 GDB 中运行数天(如果需要),直到它崩溃。
先前的研究
我已经发现了如何通过 GDB 运行简单的应用程序,直到通过 StackOverflow 上的单独答案出现段错误,但我需要稍微扩展一下这个问题。所以,我知道我可以反复运行一个程序,直到它通过以下方式崩溃:
set pagination off
break exit
commands
run
end
问题
我需要做的是弄清楚如何发出某些命令。在我的程序运行几秒钟后,它会要求用户输入(通过stdin
)范围内的数字[0,100]
,然后点击ENTER。我希望它在第一次迭代时输入0
, ,在第二次迭代中等等。我意识到如果我向应用程序添加命令行参数会容易得多,但我不允许在这个时候,就必须依靠它提供的交互操作方式了。ENTER1
ENTER
问题
我将如何创建一个命令来使用 GDB 自动生成这些击键/模式?我猜我可以编写某种GDBINIT
脚本,但我主要以交互方式使用 GDB 来获取回溯、分析内存等,并且不太熟悉这些自动化任务。
谢谢你。