Saya suka membuat GDB menetapkan titik istirahat ketika variabel sama dengan beberapa nilai yang saya tetapkan, saya mencoba contoh ini:
#include <stdio.h>
main()
{
int i = 0;
for(i=0;i<7;++i)
printf("%d\n", i);
return 0;
}
Keluaran dari 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)
Seperti yang Anda lihat, GDB tidak membuat break point, apakah ini mungkin dengan GDB?
(gdb) watch i No symbol "i" in current context.
i
ada. Cobabreak main
,run
,c
,s
(langkah untuk memastikan Anda melewati deklarasi), dan kemudian perintah pada jawaban. Pastikan untuk mengkompilasi program Anda dengan-g
flag tersebut. (yaitu dengan informasi debug)start <args>
, yang sepertitb main
,run <args>
. Ini akan memulai program, memungkinkan Anda untuk mengatur titik istirahat / menonton dengan lebih mudah.Pertama, Anda perlu mengompilasi kode Anda dengan flag yang sesuai, mengaktifkan debug menjadi kode.
lalu jalankan kode Anda dengan debugger favorit Anda
tunjukkan kodenya.
(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 }
putus pada baris 5 dan lihat jika 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
memeriksa breakpoints
(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
menjalankan program
(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)
sumber
Ada pengawasan perangkat keras dan perangkat lunak. Mereka untuk membaca dan menulis variabel. Anda perlu berkonsultasi dengan tutorial:
http://www.unknownroad.com/rtfm/gdbtut/gdbwatch.html
Untuk mengatur watchpoint, pertama Anda perlu memecah kode ke tempat di mana varian i ada di lingkungan, dan mengatur watchpoint.
watch
perintah digunakan untuk mengatur watchpoit untuk menulis,rwatch
membaca, danawatch
membaca / menulis.sumber