Jawaban:
Ketikkan info variables
ke daftar "Semua nama variabel global dan statis".
Ketik info locals
untuk daftar "Variabel lokal dari frame stack saat ini" (nama dan nilai), termasuk variabel statis dalam fungsi itu.
Ketik info args
untuk daftar "Argumen dari frame stack saat ini" (nama dan nilai).
y
diubah namanya menjadi y.1913
saat dikompilasi.
y
dalam fungsi foo
dan lain y
di bar
. Untuk membedakan mereka, nama yang berbeda harus ditetapkan untuk keduanya y
.
Jika Anda ingin melihat variabel lokal dari fungsi panggil gunakan select-frame
sebelumnyainfo locals
Misalnya:
(gdb) bt
#0 0xfec3c0b5 in _lwp_kill () from /lib/libc.so.1
#1 0xfec36f39 in thr_kill () from /lib/libc.so.1
#2 0xfebe3603 in raise () from /lib/libc.so.1
#3 0xfebc2961 in abort () from /lib/libc.so.1
#4 0xfebc2bef in _assert_c99 () from /lib/libc.so.1
#5 0x08053260 in main (argc=1, argv=0x8047958) at ber.c:480
(gdb) info locals
No symbol table info available.
(gdb) select-frame 5
(gdb) info locals
i = 28
(gdb)
select-frame
dapat disingkat sel
. Atau gunakan frame
/ f
, yang juga mencetak bingkai)
Selain itu, karena info locals
tidak menampilkan argumen ke fungsi Anda, gunakan
(gdb) info args
Sebagai contoh:
int main(int argc, char *argv[]) {
argc = 6*7; //Break here.
return 0;
}
argc
dan argv
tidak akan ditampilkan oleh info locals
. Pesannya adalah "Tidak ada penduduk setempat."
Referensi: info perintah penduduk setempat .
info variables
harus variabel statis dalam unit kompilasi, kan?