2015-03-18 13 views
5

Angenommen, die folgende .gdbinit:Gibt es eine Möglichkeit, Breakpoint-Statistiken in GDB zurückzusetzen?

break foobar 
ignore 1 1 
run 

Das Programm begann gdb --args ./myprogram --argument1 --argument2 usw.

Jetzt verwendet, als ich das erste Mal starten um alles schön und gut ist. Wenn ich jedoch eine run auf der (gdb) Aufforderung ausgeben, um das Programm mit der letzten bekannten Befehlszeile neu zu starten, wird die ignore Zeile einfach nicht wirksam.

Der Grund ist natürlich klar. Das erste Mal habe ich am Ende mit

(gdb) info break 
Num  Type   Disp Enb Address   What 
1  breakpoint  keep y 0x000000000061ea6a in foobar at ../foobar.c:1173 
     breakpoint already hit 1 time 

up Und jeder nachfolgende Durchlauf beginnt mit dem, was Wert ist in breakpoint already hit X time für X gezeigt. Natürlich wird dieser Wert bereits den Grenzwert überschreiten, der durch ignore festgelegt wurde.

Wie kann ich die Stats auf den Breakpoints zurücksetzen oder besser noch, wie kann ich run veranlassen, das automatisch für mich zu tun?

+0

Wie wäre das anders als das Beenden von gdb und das Starten einer anderen Sitzung? – dbrank0

+1

@ dbrank0: * Warum * möchtest du, dass ich GDB beende? GDB ist intelligent genug, um die Binärdatei und die Symbole zu lesen, wenn sie bei der nächsten Ausgabe von 'run' außerhalb davon aktualisiert werden. In der Tat wird dies als ein Feature von GDB beworben und ich habe meinen Workflow darum herum modelliert. – 0xC0000022L

Antwort

3

Wie kann ich die Stats auf den Breakpoints zurücksetzen oder besser noch, wie kann ich veranlassen, dass run das automatisch für mich tut?

Eine Möglichkeit, das zu tun ist:

# ~/.gdbinit 
break foobar 
break main 
commands 2 
    silent 
    ignore 1 1 
    continue 
end 

nun jedes Mal, wenn Sie laufen, Sie auf main silent Haltepunkt erreicht, die die auf foobar Breakpoint zählen setzt ignore und fährt fort.

+0

Ich halte etwas länger für Lösungen aus, aber diese ist durchaus sinnvoll. Ich denke, es würde für mich funktionieren. Vielen Dank. – 0xC0000022L

Verwandte Themen