2011-03-28 24 views
6

disassembly में इस तरह के कोड है:जीडीबी में -0x4 (% आरबीपी) कैसे मुद्रित करें?

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

मैं मूल्य इस तरह से प्रिंट करने का प्रयास लेकिन विफल रहता है:

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

कैसे सही ढंग से मुद्रित करने के लिए?

उत्तर

13

ऐसा लगता है कि, 64 बिट कोड के साथ काम कर रहे हैं इस स्थिति में आप सिर्फ जरूरत है, उदाहरण के लिए:

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

आप क्या पर वास्तव में है इस पते को देखने के लिए चाहते हैं, तो आप कास्ट करने के लिए की जरूरत है void * पता, उदाहरण के लिए

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

या, और अधिक संक्षेप, p के बजाय x, उदा का उपयोग

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

तुम भी इस्तेमाल कर सकते हैं: '(gdb) x/डब्ल्यू $ RBP-0x4' – Karmastan

+0

@Karmastan: शांत - धन्यवाद - मुझे लगता है कि इस सवाल का जवाब –

+0

एक्स/डब्ल्यू * $ rbp- में एक विकल्प के रूप में शामिल कर देंगे 0x4, x/w $ rbp-0x4 –

संबंधित मुद्दे