Mencetak semua variabel global / variabel lokal?


Jawaban:


490

Ketikkan info variableske daftar "Semua nama variabel global dan statis".

Ketik info localsuntuk daftar "Variabel lokal dari frame stack saat ini" (nama dan nilai), termasuk variabel statis dalam fungsi itu.

Ketik info argsuntuk daftar "Argumen dari frame stack saat ini" (nama dan nilai).


2
@ KennyTM, nama variabel statis dalam output info variablesharus variabel statis dalam unit kompilasi, kan?
cpuer

3
@cpuer: Belum tentu. Ini hanya menampilkan nama dalam tabel simbol. Misalnya, dengan gcc pada Mac, variabel statis ydiubah namanya menjadi y.1913saat dikompilasi.
kennytm

1
@ KennyTM, bukankah variabel statis di dalam fungsi disimpan dengan cara yang sama seperti variabel statis di luar fungsi (dalam tabel simbol)?
cpuer

2
@cpuer: Mereka disimpan dengan cara yang sama tetapi nama simbol akan berbeda. Pertimbangkan Anda memiliki variabel statis ydalam fungsi foodan lain ydi bar. Untuk membedakan mereka, nama yang berbeda harus ditetapkan untuk keduanya y.
kennytm

1
@ KennyTM, lebih jauh lagi, apakah mungkin untuk mendapatkan tempat variabel dideklarasikan dan didefinisikan masing-masing?
cpuer

110

Jika Anda ingin melihat variabel lokal dari fungsi panggil gunakan select-framesebelumnyainfo 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) 

4
( select-framedapat disingkat sel. Atau gunakan frame/ f, yang juga mencetak bingkai)
user202729

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.