2012-10-17 18 views
7

Bir programda hata ayıkladığımda ve karşılaştığım düzgün hizalanmış, işaretçi boyutu için sembolleri aldığımda yığınının gitmesini sağlıyorum. Bunu elle yapmaktan sıkıldım ve bu yüzden benim için bir komut yazmayı denedim. Sorun, "bilgi sembolü" parametresi, işaretçi dereferansı yoluyla ayarlandığında parametresi olarak bir kolaylık değişkeni kullanmaktan hoşlanmaz. IE:GDB uygunluk değişkeninde tutulan değer için sembol bilgisi alma

(gdb) info symbol 0xb6ca4d28 
[Useful Symbol Information] 
(gdb) set $pointer = $esp 
(gdb) while (*(int*)$pointer != 0xb6ca4d28) 
>set $pointer += 4 
>end 
(gdb) x/x $pointer 
0x6ebee064:  0xb6ca4d28 
(gdb) set $dereferencePointer = *(int *)$pointer 
(gdb) p/x $dereferencePointer 
$103 = 0xb6ca4d28 
(gdb) info symbol $dereferencePointer 
No symbol matches $dereferencePointer. 
(gdb) set $dereferencePointer = 0xb6ca4d28 
(gdb) p/x $dereferencePointer 
$104 = 0xb6ca4d28 
(gdb) info symbol $dereferencePointer 
[Useful symbol information] 
(gdb) 

Neden bu? Bu bir hata mı? Bunu yapmanın farklı bir yolu var mı?

Teşekkürler!

Luc

Not: Bu büyük olasılıkla bir hata

geçerli: listeden 7.5

Güncelleme vanilya GDB kullanma.

+1

Belki bir 'gdb' ile ilgili posta listesi sormak için daha iyi bir yer olabilir. –

+0

Takip etmek için: Freebsd sorularının gdb eşdeğerini bulamadım, bu soruyu genel gdb listesine gönderdim ve henüz bir yanıt almamıştım. Eğer yaparsam, soruyu güncelleyeceğim. – shroudednight

+0

Kayıt için, bu GNU gdb (GDB) 7.3.50.20111117-cvs-debian' üzerinde iyi çalışıyor gibi görünüyor – Jester

cevap

1

Hata ya da değil,/a biçim belirtecini p ve x komutlarıyla kullanmanızı öneririz. Bu her zaman benim için çalışır ve yazmak daha hızlıdır.