2011-03-28 12 views
6

böyle kod var:Gdb'de -0x4 (% rbp) nasıl yazdırılır? demontaj olarak

movl $0x6,-0x4(%rbp) 

ben değerini bu şekilde yazdırmaya çalışıyorum ama başarısız:

(gdb) p 0x4(%esp) 
A syntax error in expression, near `%esp)'. 
(gdb) p 0x4+$esp 
Argument to arithmetic operation not a number or boolean. 

Nasıl doğru yazdırmak için?

cevap

13
Eğer örneğin bu durumda sadece ihtiyaç 64 bitlik kodu ile çalışıyormuş gibi görünüyor

:

(gdb) p $rbp-0x4 
$1 = (void *) 0x7fff5fbff71c 

bu adres aslında ne olduğunu görmek istiyorsanız, o zaman döküm gerekir void * adresi, örn.

(gdb) p /x *(int *)($rbp-0x4) 
$2 = 0x7fff 

veya daha kısa ve öz olarak, yerine p arasında x kullanabilir, örneğin;

(gdb) x /w $rbp-0x4 
0x7fff5fbff71c: 0x00007fff 
+0

Ayrıca kullanabilirsiniz: '(gdb) x/$ RBP-0x4' – Karmastan

+0

@Karmastan w: serin - teşekkürler - Ben cevap –

+0

x w/* $ rbp- içinde alternatif olarak ekleyeceğiz 0x4, x/w $ rbp-0x4 olmalıdır –

İlgili konular