2011-10-11 6 views
18

たとえば、私のプログラムにNamespaceA :: ClassB :: FunctionC()関数があります。私は、 "break NamespaceA :: ClassB :: FunctionC"によってGDBに壊すように頼むことができることを知っています。しかし、もしこの関数が、例えば100回呼び出された後、GDBだけがそこで壊れてしまうようにしたいのであれば、どうすればよいでしょうか?GDBに特定の時刻に呼び出された後で関数を中断するように要求する方法はありますか?

私は、回避策はプログラムに変数を1つ追加していると思うし、GDBの "break ... if cond"コマンドが使えると思います。しかし、プログラムに変数を追加しなくても同じことができますか?

ありがとうございます。

+1

が http://stackoverflow.com/questions/2956889/how-to-set-a-counter-for-a-gdbの下で関連の質問を参照トリックを行う必要があります-breakpoint – Omar

+0

[GDBブレークポイントは、ポイントに所定の回数だけ到達した後にブレークする方法は?](https://stackoverflow.com/questions/2956889/how-to-make-a-gdb-breakpoint) -only-break-after-the-given-a-given-numbe) –

答えて

21
(gdb) continue 100 

(gdb) help continue 
Continue program being debugged, after signal or breakpoint. 
If proceeding from breakpoint, a number N may be used as an argument, 
which means to set the ignore count of that breakpoint to N – 1 (so that 
the breakpoint won’t break until the Nth time it is reached). 
+13

これは、あなたがすでに与えられたブレークポイントにいることを前提としています。 'ignore 'で無視カウントを直接設定することもできます。 'n'は' count'回を無視するブレークポイントの番号です。 – Cascabel

+1

@ Jefromi IMHOあなたのコメントは別の答えになる価値があります。 – Melebius

関連する問題