MC, 12:12 niedziela, 01.04.2012 r.
Ilustracja do artykułu: GDB - Warunkowe punkty wstrzymania

GDB - Warunkowe punkty wstrzymania

Krótka notatka ku pamięci na temat warunkowych breakpoint-ów w debuggerze GDB.

Po co robić warunkowe breakpointy?

Dajmy na to, że mamy pętlę, która iterowana jest kilka tysięcy razy a newralgiczna sytuacja występuje pod koniec wykonywania tej pętli. Gdyby nie fakt, że mamy możliwość zadania warunku na punkt wstrzymania (w tym wypadku uzależniony od parametru iteracji), trzeba by ręcznie puszczać dalej działanie programu, aż do następnego wstrzymania i tak do skutku.

Jak więc zadać warunek na punkt wstrzymania?

Po ustawieniu breakpoint-a dostajemy jego numer. Znając go możemy nałożyć na dane wstrzymanie warunek za pomocą polecenia condition, którego składnia wygląda następująco:
condition <numer breakpoint-a> <warunek logiczny>

Czyli przykładowo, jeżeli chcemy zatrzymać się w pętli (wiersz 180), ustawiamy tam break-a, a następnie warunek na parametr iteracyjny (zmienna i), dajmy na to, by wstrzymanie wystąpiło tylko jeśli będzie on większy od 9995.

(gdb) break 180
Breakpoint 1 at 0x8049006: file main.cpp, line 180.
(gdb) condition 1 i > 9995
(gdb) run

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: