Tüm global değişkenler / yerel değişkenler yazdırılıyor mu?


Yanıtlar:


490

Tür info variables"Bütün küresel ve statik değişken isimleri" listesine.

Tip info localso fonksiyonun statik değişkenleri içeren liste "geçerli yığın çerçevesinin Yerel değişkenler" (adları ve değerleri), için.

Tip info args(ve onların değerleri) "geçerli yığın çerçevesinin değişkenleri" listesine.


2
@ KennyTM, çıkışındaki statik değişken isimlerinin info variableso derleme birimi içindeki statik değişkenler olması gerekir, değil mi?
cpuer

3
@cpuer: Mutlaka değil. Yalnızca sembol tablosundaki adı görüntüler. Örneğin, Mac'te gcc ile derleme sırasında statik bir değişken yolarak yeniden adlandırılır y.1913.
kennytm

1
@KennyTM, fonksiyon içindeki statik değişkenler fonksiyon dışındaki statik değişkenlerle aynı şekilde saklanmaz mı (sembol tablosunda)?
cpuer

2
@cpuer: Aynı şekilde saklanırlar, ancak sembol adları farklılık gösterir. Eğer bir statik değişkeni var düşünün yfonksiyonunda foove başka yin bar. Bunları ayırt etmek için, ikisine farklı bir ad verilmelidir y.
kennytm

1
@KennyTM, dahası, bir değişkenin sırasıyla bildirildiği ve tanımlandığı yere ulaşmak mümkün müdür?
cpuer

110

Arama işlevinin yerel değişkenlerini daha select-frameönce kullanmak istediğinizdeinfo locals

Örneğin:

(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-framekısaltması yapılabilir sel. Alternatif olarak frame/ fçerçevesini de basan / kullanın )
user202729

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.