Me gusta hacer que GDB establezca un punto de interrupción cuando una variable es igual a algún valor que establecí, probé este ejemplo:
#include <stdio.h>
main()
{
int i = 0;
for(i=0;i<7;++i)
printf("%d\n", i);
return 0;
}
Salida de 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)
Como puede ver, GDB no hizo ningún punto de quiebre, ¿es esto posible con GDB?
(gdb) watch i No symbol "i" in current context.
i
exista. Intentabreak main
,run
,c
,s
(paso para asegurarse de que llegue más allá de la declaración), y luego los comandos en la respuesta. Asegúrese de compilar su programa con la-g
bandera. (es decir, con información de depuración)start <args>
, que es comotb main
,run <args>
. Esto iniciará el programa, lo que le permitirá establecer puntos de interrupción / vigilancia con mayor facilidad.Primero, debe compilar su código con los indicadores apropiados, lo que permite la depuración en el código.
luego simplemente ejecute su código con su depurador favorito
muéstrame el código.
(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 }
rompe en las líneas 5 y mira si 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
comprobar los puntos de interrupción
(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
ejecutando el programa
(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)
fuente
Hay puntos de observación de hardware y software. Son para leer y escribir una variable. Necesitas consultar un tutorial:
http://www.unknownroad.com/rtfm/gdbtut/gdbwatch.html
Para establecer un punto de observación, primero debe dividir el código en un lugar donde el varianle i esté presente en el entorno y establecer el punto de observación.
watch
El comando se usa para establecer un punto de observación para escribir, mientras querwatch
para leer yawatch
para leer / escribir.fuente