1

私はコーディングに比較的慣れていないので、不適切な語彙を許してください。私が基本的にやろうとしているのは、GDB 用のスクリプトを作成するか、GDB にコマンドを入力して、テスト ケースの入力ファイルでコードを何度も実行できるようにすることです。基本的に、私は現在、セマフォとミューテックスを多用するプロジェクトに取り組んでおり、どこかで、ブルームーンに一度、競合状態が原因でコードが壊れます。コードがセグ フォールトに達するまで gdb にテスト ケースを継続的に実行させることができれば、理想的です。

PS-私がしなければならないことを具体的に教えてください。技術的な回答が多い回答を分析するのは得意ではありません。

ありがとう!

4

2 に答える 2

1

最も簡単な解決策は、expect スクリプトです。Expect は、テキスト ターミナル インターフェイスを公開するプログラムとの対話を自動化するプログラムです。

例はhttp://en.wikipedia.org/wiki/Expectで入手できます。

スクリプトは次のようになります

#!/usr/bin/expect

# start gdb
spawn gdb yourprogram

while {1} {

# wait for gdb to start, expect the (gdb) to appear
expect "(gdb)"

# send command to run your program
send "run your_args\n"

expect {
    "Program exited normally."    {continue}  # just run again
    "(Some error message)"        {interact}  # start to debug
}

}
于 2013-06-09T03:38:14.060 に答える
0

GDB セッションを自動化するために、GDB スクリプトを使用できます。GDB マクロ コーディング言語は、基本的なループ ステートメントと条件付きステートメントに加えて、gdb コマンドで構成されます。

ここでそれに関する情報を見つけることができます

http://www.adacore.com/adaanswers/gems/gem-119-gdb-scripting-part-1/

GDB デバッグ セッションを自動化する最良の方法は何ですか?

于 2015-06-22T09:21:07.043 に答える