file main.c:
#include <stdio.h>
int main()
{
int i;
for (i=0; i<30 ;i++) {
printf ("%d\n", i);
}
return 0;
}
В GDB я обычно устанавливаю точку останова, затем указываю точку наблюдения в качестве команды, которая будет выполняться на этой точке останова:
(gdb) break main
Breakpoint 1 at 0x4004b0: file main.c, line 6.
(gdb) command
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>watch i
>end
ВыполнениеОстановимся всякий раз, когда изменяется наблюдаемая переменная, проблема в том, что нет никакого способа (насколько мне известно) сказать gdb просто напечатать значение наблюдаемой переменной и продолжить, потому что это вложенная точка наблюдения.Если бы это была отдельная точка наблюдения, это легко сделать с помощью команды 'continue' (когда я в области видимости, если main ()):
(gdb) watch i
Hardware watchpoint 2: i
(gdb) command
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>continue
>end
Итак, есть ли способ для gdb не останавливаться?на вложенной точке наблюдения, и вывести только изменение значения?Или лучше да, чтобы указать команды, которые будут выполняться на вложенных точках наблюдения / останова?
Я также попытался 'установить жалобы 0' и 'установить подтверждение выключено' в GDBно безрезультатно