2011-10-11 113 views
18

例如,我在我的程序中有一個函數NamespaceA :: ClassB :: FunctionC()。我知道我可以通過「break NamespaceA :: ClassB :: FunctionC」來要求GDB打破那裏。但是,如果我只希望GDB在這個函數被調用後打破100次,我應該怎麼做呢?如何讓GDB在某個函數被調用一段時間後才中斷?

我認爲一個解決方法是在程序中增加一個變量,然後在GDB中可以使用「break ... if cond」命令。但是我可以在不向我的程序添加變量的情況下實現同樣的功能嗎

謝謝。

+1

看到相關的問題在 http://stackoverflow.com/questions/2956889/how-to-set-a-counter-for-a-gdb破壞點 – Omar

+0

可能的重複[如何使一個GDB斷點在該點達到給定次數後纔會中斷?](https://stackoverflow.com/questions/2956889/how-to-make-a-gdb-breakpoint -only-break-after-point-is-reached-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

這假設你已經在給定的斷點處。您也可以直接設置忽略計數,忽略',其中'n'是忽略'計數'次數的斷點編號。 – Cascabel

+1

@Jefromi恕我直言,你的評論是值得成爲另一個答案。 – Melebius

相關問題