जवाबों:
info registers
सभी रजिस्टर दिखाता है; info registers eax
सिर्फ रजिस्टर दिखाता है eax
। कमांड को संक्षिप्त रूप में देखा जा सकता हैi r
info registers eax
। मुझे यकीन नहीं है कि अगर यह gdb के विभिन्न संस्करणों के लिए अलग है, हालांकि।
register read [eax]
display
। उदाहरण के लिए display $eax
।
यदि आप GDB में एक विशिष्ट रजिस्टर प्रिंट करने का प्रयास कर रहे हैं, तो आपको% चिन्ह को छोड़ना होगा। उदाहरण के लिए,
info registers eip
यदि आपका निष्पादन योग्य 64 बिट है, रजिस्टर r से शुरू होता है। उन्हें ई के साथ शुरू करना मान्य नहीं है।
info registers rip
इन्हें संक्षिप्त किया जा सकता है:
i r rip
वहाँ भी:
info all-registers
तब आप उस रजिस्टर नाम को प्राप्त कर सकते हैं जिसमें आप रुचि रखते हैं - प्लेटफ़ॉर्म-विशिष्ट रजिस्टर (एआरएम पर नीयन क्यू ... जैसे) के लिए बहुत उपयोगी है।
eax
, ecx
और अन्य मानक रजिस्टरों से छिपा हुआ info registers
। यह संभवतः स्वीकृत उत्तर होना चाहिए।
Gdb कमांड :
i r <register_name>
: एक ही रजिस्टर प्रिंट करें, जैसे i r rax
,i r eax
i r <register_name_1> <register_name_2> ...
: प्रिंट कई रजिस्टर, जैसे i r rdi rsi
,i r
: फ्लोटिंग पॉइंट और वेक्टर रजिस्टर (xmm, ymm, zmm) को छोड़कर सभी रजिस्टर को प्रिंट करें।i r a
: सभी रजिस्टर प्रिंट करें, फ्लोटिंग पॉइंट और वेक्टर रजिस्टर (xmm, ymm, zmm) शामिल करें।i r f
: सभी FPU फ्लोटिंग रजिस्टर ( st0-7
और कुछ अन्य f*
) प्रिंट करेंइसके अलावा अन्य रजिस्टर समूह a
( all
) और f
( float
) के साथ मिल सकते हैं:
maint print reggroups
के रूप में प्रलेखित: https://sourceware.org/gdb/current/onbuildocs/gdb/Registers.html##egisters
टिप्स :
xmm0
~ xmm15
, 128 बिट्स हैं, लगभग हर आधुनिक मशीन के पास है, वे 1999 में जारी किए गए।ymm0
~ ymm15
, 256 बिट्स हैं, नई मशीन में आमतौर पर यह होता है, वे 2011 में जारी की जाती हैं।zmm0
~ zmm31
, 512 बिट्स हैं, सामान्य पीसी में शायद ऐसा नहीं है ( वर्ष 2016 के अनुसार ), वे 2013 में जारी किए गए, और मुख्य रूप से अब तक सर्वर में उपयोग किए जाते हैं।p $eax
GDB 7.7.1 के रूप में काम करता है
GDB 7.7.1 के अनुसार, आपके द्वारा काम की गई कमांड:
set $eax = 0
p $eax
# $1 = 0
set $eax = 1
p $eax
# $2 = 1
इस सिंटैक्स का उपयोग एआरएम फ़्लोटिंग पॉइंट रजिस्टरों के लिए विभिन्न यूनियन सदस्यों के बीच चयन करने के लिए भी किया जा सकता है जो फ़्लोटिंग पॉइंट या पूर्णांक हो सकते हैं:
p $s0.f
p $s0.u
से डॉक्स :
'$' से पहले किसी भी नाम का उपयोग सुविधा चर के लिए किया जा सकता है, जब तक कि यह पूर्वनिर्धारित मशीन-विशिष्ट रजिस्टर नामों में से एक न हो।
और :
आप 'रजिस्टर' नाम से शुरू होने वाले चर के रूप में, मशीन रजिस्टर सामग्री का उल्लेख कर सकते हैं। प्रत्येक मशीन के लिए रजिस्टरों के नाम अलग-अलग हैं; अपनी मशीन पर उपयोग किए गए नामों को देखने के लिए जानकारी रजिस्टर का उपयोग करें।
लेकिन मेरे पास अब तक नियंत्रण रजिस्टर के साथ बहुत अधिक भाग्य नहीं है: OSDev 2012 http://f.osdev.org/viewtopic.php?f=1&t=25968 || 2005 सुविधा अनुरोध https://www.sourceware.org/ml/gdb/2005-03/msg00158.html || alt.lang.asm 2013 https://groups.google.com/forum/# .topic / alt.lang.asm / JC7YS3Wu31I
एआरएम फ्लोटिंग प्वाइंट रजिस्टर
देखें: /reverseengineering/8992/floating-point-registers-on-arm/20623#20623
$
सिंटैक्स के साथ अभिव्यक्तियों में रजिस्टरों का उपयोग करने में सक्षम होना बहुत अच्छा है ।
layout reg
Gdb का उपयोग सभी पूर्णांक और ध्वज रजिस्टरों की एक तालिका दिखाने के लिए करते हैं, जो पिछले निर्देश द्वारा परिवर्तित किए गए हैं। उदाहरण के लिए stackoverflow.com/tags/x86/info देखें ।