2015-03-18 13 views
5

Przyjmijmy następujące .gdbinit:Czy istnieje sposób resetowania statystyk punktów przerwania w GDB?

break foobar 
ignore 1 1 
run 

Program jest uruchamiany za pomocą gdb --args ./myprogram --argument1 --argument2 itp

Teraz, kiedy zacznę to za pierwszym razem wszystko jest cacy. Jeśli jednak wydam polecenie run na monitorze (gdb) w celu ponownego uruchomienia programu przy użyciu ostatnio znanego wiersza poleceń, linia ignore po prostu nie zadziała.

Przyczyna jest oczywista. Za pierwszym razem I skończyć z

(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 

i ewentualne późniejsze bieg rozpoczyna się z tym, co pokazano na wartość X w breakpoint already hit X time. Oczywiście ta wartość przekroczy limit określony przez ignore.

Jak mogę zresetować statystyki punktów przerwania lub jeszcze lepiej, ale czy mogę automatycznie wykonać dla mnie run?

+0

Czym różni się to od wyjścia z gdb i rozpoczęcia kolejnej sesji? – dbrank0

+1

@ dbrank0: * dlaczego * chcesz, żebym rzucił GDB? GDB jest na tyle sprytny, aby odczytać binarne i symbole, jeśli zostaną zaktualizowane poza nim, gdy następnym razem wyda 'run'. W rzeczywistości jest to reklamowane jako cecha GDB i modelowałem mój przepływ pracy wokół niego. – 0xC0000022L

Odpowiedz

3

Jak mogę zresetować statystyki na punktach przerwania lub jeszcze lepiej, ale w jaki sposób mogę spowodować, że run to zrobi automatycznie dla mnie?

Jednym ze sposobów na to jest:

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

Teraz, za każdym razem biegać, trafisz cichą przerwania na main, który resetuje ignorowanych liczyć na foobar przerwania i kontynuuje działanie.

+0

Wytrzymam dłużej na rozwiązania, ale ten jest całkiem rozsądny. Myślę, że zadziałałoby to dla mnie. Dzięki. – 0xC0000022L

Powiązane problemy