問題
私がレビューしているcプログラムをgdbに自動的にデバッグさせようとしていますが、既知のバグが原因でクラッシュが発生する可能性はわずかですが (つまり、可能性は 1 つ) あります。私は別のエンジニアと、対処するのに十分深刻であると争っています。そのため、修正に時間を費やすことを正当化するために、実際にクラッシュを発生させる必要があります。テストを高速化するために、必要に応じてクラッシュするまで、アプリケーションを GDB で実行するスクリプトを作成する予定です。10,000
先行研究
StackOverflow の別の回答を介してセグメンテーション違反が発生するまで、GDB を介して単純なアプリケーションを実行する方法を見つけましたが、問題を少し拡張する必要があります。したがって、プログラムがクラッシュするまで繰り返し実行できることはわかっています。
set pagination off
break exit
commands
run
end
問題
私がしなければならないことは、特定のコマンドを発行する方法を理解することです。私のプログラムが数秒間実行された後、ユーザーにstdin
の範囲の数字を ( 経由で)入力するように求め、[0,100]
を押しENTERます。最初の反復で , ,0
を入力し、2 回目の反復で , , などと入力したいと思います。アプリケーションにコマンドライン引数を追加すれば、これはずっと簡単になると思いますが、変更することはできません。今回は、それが提供するインタラクティブな操作モードに依存する必要があります。ENTER1
ENTER
質問
これらのキーストローク/パターンを GDB で自動的に生成するコマンドを作成するにはどうすればよいですか? なんらかのGDBINIT
スクリプトを作成できると思いますが、バックトレースの取得やメモリの分析などに GDB をインタラクティブに使用することがほとんどで、このようなタスクの自動化についてはあまり詳しくありません。
ありがとうございました。