2013-06-03 28 views
9

Linux上で静的マルチスレッドx86-64 C++アプリケーションをデバッグしています。gdbのステップが期待どおりに動作しない

私は関数にブレークポイントを設定してそれらを停止することができ、私は関数本体に対してステップバイステップで歩くことができます。しかし、私が別の関数に踏み込もうとすると、gdbはそれが始まった時点で止まらず、実行を続けるように見えます。私はプログラムの実行を中断すると、GDBは状態を破らに進み、使用できなくなった:回避策として

(gdb) bt 
Target is executing. 
(gdb) c 
Continuing. 
Cannot execute this command while the selected thread is running. 
(gdb) 

私はstepi数回の代わりに、予想通りstepstepi作品を使用することができます。 この動作の理由は何ですか? stepi以外の回避策はありますか? gdb 7.6とgcc 4.7.1を使用しています。

+0

で利用できます。 '-ggdb'と' -O0'を使ってターゲットをコンパイルしましたか? step( 's')とnext(' n')の違いを観察しようとしましたか? – Reinderien

+0

@Reinderien、私のターゲットは '-g'と' -O0'でコンパイルされています。 's'と' n'の違いをどうやって見ることができますか? – ks1322

+0

'-g'から' -ggdb'に変更してみてください。違いを見るには、gdbの 's'(事実上"ステップイン ")と' n'(事実上 "ステップオーバー")を打ちます。 – Reinderien

答えて

12

この現象が発生する原因は何ですか?

これはGDBのバグです。それは一時的なブレークポイントを設定し、それがヒットすることを期待します。しかし、ブレークポイントはヒットしません(間違った場所に設定されている可能性もあります)、GDBの内部ステートマシンはすべて混乱します。

stepiの使用以外の回避策はありますか?

あなたはCVSから最上位のトランクGDBのバージョンにアップグレードしてみてください、とGDBはまだ壊れている場合は、GDB bugzillaにバグを報告することができます。

+0

誰かがこれを報告しましたか?バグ番号は何ですか? –

+0

@LightnessRacesinOrbit、私は最近報告しました。バグレポートで最小限のリピーターを見ています。https://sourceware.org/bugzilla/show_bug.cgi?id=17134 – ks1322

1

ステップコマンド警告:コントロールはデバッグ情報なしでコンパイルされた関数内にあるときにstepコマンドを使用している場合はコントロールがデバッグ情報を持っている機能に達するまで

、実行が進行します。同様に、デバッグ情報なしでコンパイルされた関数にステップインしません。

また、stepコマンドは、関数の行番号情報がある場合にのみ関数を入力します。それ以外の場合は、次のコマンドのように動作します。

2

少し古い投稿です。私はまだそれで恩恵を受ける人がいると信じています。

同じ問題が発生しました。私の場合、プロセスはマルチスレッドでした。そして私は、ブレークポイントをヒットしたスレッドが停止し、他のスレッドが実行されたことに注意することが起こっ:

6 Thread 1000368545 (running) 
    5 Thread 1000368389 (running) 
    4 Thread 1000368388 (running) 
    3 Thread 1000368387 (running) 
    2 Thread 1000368386 myBreakPointFunction() at location/in/my/sourcefile.c:linenumber 
* 1 Thread 1000367766 (running) 

「BT」コマンドを発行しながら、それが表示しました「ターゲットが実行されています。」 スレッド2(スレッド2を発行することによって)に移動してbtを発行すると、私はコールトレースを見ることができました。 詳しい情報や実験をしたい場合は、 "set scheduler-locking"を設定することをお勧めします。このモードの詳細は、https://sourceware.org/gdb/onlinedocs/gdb/All_002dStop-Mode.html

+0

なぜスレッドリストを表示するのですか? – clearlight

関連する問題