2011-10-11 7 views
18

Na przykład w moim programie mam funkcję NamespaceA :: ClassB :: FunctionC(). Wiem, że mogę poprosić GDB, aby się tam włamał, przez "break NamespaceA :: ClassB :: FunctionC". Ale co powinienem zrobić, gdybym tylko chciał, aby GDB się tam włamał, po tym, jak ta funkcja zostanie wywołana, powiedzmy, 100 razy?Jak poprosić GDB o złamanie funkcji tylko po tym, jak zostanie wywołane określone czasy?

Myślę, że rozwiązaniem zastępczym jest dodanie jeszcze jednej zmiennej do programu, a następnie można użyć polecenia "break ... if cond" w GDB i. Ale czy mogę osiągnąć to samo bez dodawania zmiennych do mojego programu?

Dziękuję.

+1

zobaczyć powiązane pytanie pod http://stackoverflow.com/questions/2956889/how-to-set-a-counter-for-a-gdb -breakpoint – Omar

+0

Prawdopodobny duplikat [Sposób utworzenia punktu przerwania GDB jest przerywany tylko po osiągnięciu punktu o danej liczbie razy?] (https://stackoverflow.com/questions/2956889/how-to-make-a-gdb-breakpoint -nowy-break-after-the-point-is-reach-numbe) –

Odpowiedz

21
(gdb) continue 100 

powinno wystarczyć

(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

Zakłada to, że jesteś już w danym punkcie przerwania. Możesz także ustawić liczbę ignorowanych bezpośrednio za pomocą 'ignore ', gdzie 'n' jest numerem punktu przerwania do zignorowania razy' count'. – Cascabel

+1

@Jefromi IMHO Twój komentarz jest warty, aby stać się kolejną odpowiedzią. – Melebius

Powiązane problemy