Mam funkcję, która jest wywoływana kilka razy i ostatecznie dochodzi do awarii.
Nie chcę jednak ustawiać punktu przerwania w tej funkcji i zatrzymywać się po każdym wywołaniu, ponieważ będę tu przez lata.
Słyszałem, że mogę ustawić counter
w GDB punkt przerwania i za każdym razem, gdy punkt przerwania zostanie osiągnięty, licznik jest zmniejszany i jest wyzwalany tylko wtedy, gdy counter
= 0.
Czy jest to poprawne, a jeśli tak, jak mam to zrobić? Proszę podać kod gdb do ustawienia takiego punktu przerwania.
gdb
breakpoints
Tony Stark
źródło
źródło
Odpowiedzi:
Przeczytaj rozdział 5.1.6 podręcznika GDB. Musisz najpierw ustawić punkt przerwania, a następnie ustawić „liczbę ignorowanych” dla tego numeru punktu przerwania, np
ignore 23 1000
.Jeśli nie wiesz, ile razy należy zignorować punkt przerwania i nie chcesz liczyć ręcznie, pomocne mogą być następujące czynności:
źródło
continue <n>
Jest to wygodna metoda, która pomija
n - 1
czasy ostatniego trafienia (i dlatego zatrzymuje się przy n-tym trafieniu):main.c
Stosowanie:
Sesja GDB:
źródło