12

特定の関数名がバックトレースに表示された場合にのみブレークするように、gdb ブレークポイントに条件を設定したいと考えています。これを行う最善の方法は何ですか?

4

3 に答える 3

4

Python スクリプトよりも簡単な解決策は、一時的なブレークポイントを使用することです。

次のようになります。

b ParentFunction
command 1
  tb FunctionImInterestedIn
  c
end

に侵入するたびにParentFunction、実際に関心のある関数に 1 回限りのブレークポイントを設定し、実行を続けます (おそらく、そのブレークポイントに到達するまで)。

で 1 回だけ中断するため、 が のコンテキストで複数回呼び出され、各呼び出しで中断したいFunctionImInterestedIn場合、これは機能しません。FunctionImInterestedInParentFunction

于 2016-05-02T13:29:38.540 に答える
3

あなたが求めていることを正確に行う方法はわかりませんが、関連する関数のソースコードにアクセスできる場合、可能な回避策はtrue、関数の先頭にグローバルブール変数を設定し、それをに設定することです。false関数が終了する直前。condition次に、このブール変数が。の場合にのみ停止するように(コマンドを使用して)条件付きブレークポイントを設定できますtrue

于 2010-11-14T13:00:01.253 に答える