Мне нравится заставлять GDB устанавливать точку останова, когда переменная равна некоторому установленному мной значению, я пробовал этот пример:
#include <stdio.h>
main()
{
int i = 0;
for(i=0;i<7;++i)
printf("%d\n", i);
return 0;
}
Вывод из GDB:
(gdb) break if ((int)i == 5)
No default breakpoint address now.
(gdb) run
Starting program: /home/SIFE/run
0
1
2
3
4
5
6
Program exited normally.
(gdb)
Как видите, GDB не сделал точки останова, возможно ли это с GDB?
(gdb) watch i No symbol "i" in current context.
i
существует. Попробуйтеbreak main
,run
,c
,s
(шаг , чтобы убедиться , что вы получите мимо декларации), а затем команды на ответ. Обязательно скомпилируйте свою программу с-g
флагом. (т.е. с отладочной информацией)start <args>
, что , какtb main
,run <args>
. Это запустит программу, что позволит вам более легко устанавливать точки перерыва / просмотра.Во-первых, вам нужно скомпилировать свой код с соответствующими флагами, чтобы включить отладку в коде.
затем просто запустите свой код с помощью своего любимого отладчика
покажи мне код.
(gdb) list 1 #include <stdio.h> 2 int main(void) 3 { 4 int i = 0; 5 for(i=0;i<7;++i) 6 printf("%d\n", i); 7 8 return 0; 9 }
break в строках 5 и смотрит, если i == 5.
(gdb) b 5 Breakpoint 1 at 0x4004fb: file ex1.c, line 5. (gdb) rwatch i if i==5 Hardware read watchpoint 5: i
проверка точек останова
(gdb) info b Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004fb in main at ex1.c:5 breakpoint already hit 1 time 5 read watchpoint keep y i stop only if i==5
запуск программы
(gdb) c Continuing. 0 1 2 3 4 Hardware read watchpoint 5: i Value = 5 0x0000000000400523 in main () at ex1.c:5 5 for(i=0;i<7;++i)
источник
Есть аппаратные и программные точки наблюдения. Они предназначены для чтения и записи переменной. Вам нужно обратиться к руководству:
http://www.unknownroad.com/rtfm/gdbtut/gdbwatch.html
Чтобы установить точку наблюдения, сначала вам нужно разбить код на место, где в среде присутствует вариант i, и установить точку наблюдения.
watch
Команда используется для установки точки наблюдения для записи,rwatch
чтения иawatch
чтения / записи.источник