سؤال

وأنا التحقيق ما تناول الكثير من الذاكرة في تطبيقي. باستخدام الأمر! DumpObj، ويمكنني أن التفاف على الكائنات المدارة. ولكن كيف أفعل ما يعادل لالكائنات الأصلية؟ على سبيل المثال، هذا الكائن. NET لديها مؤشر إلى التعليمات البرمجية الأصلية. انا عالق هنا ... كيف أفعل ما يعادل! DumpObj من هنا؟ لدي كل مصدر والرموز.

0:006> !DumpObj 0000000006222a50 
Name: Beriliun.GS.Internal.Signer
MethodTable: 000007ff00658548
EEClass: 000007ff00734170
Size: 24(0x18) bytes
 (d:\GS\bin\debug\LIBXT.dll)
Fields:
              MT    Field   Offset                 Type VT     Attr            Value Name
000007fef02f8448  4000647        8                  PTR  0 instance 000000002d7621e0 pSigner
0:006> !DumpObj 000000002d7621e0 
<Note: this object has an invalid CLASS field>
Invalid object
هل كانت مفيدة؟

المحلول

ويمكنك تفريغ الكائن عن طريق تشغيل الأمر التالي:

!object address.

وبالإضافة إلى ذلك أيضا رأس كائن يمكن ملقاة. رأس كائن يقع دائما في بايت 18H قبل الكائن في الذاكرة. يمكن أن تكون ملقاة مع الأمر التالي

!dt nt!_object_header address-18h

لمعرفة نوع قد ترغب في إضافة أيضا إلى تفريغ نوع الكائن. ويمكن تحقيق ذلك مع الأمر التالي.

!dt nt!_object_type address-of-type

وتتم طباعة عنوان من نوع كجزء من تفريغ رأس الكائن. اسم الحقل المقابل اكتب.

نصائح أخرى

والأمر د * يجب أن يوفر لك محتويات الذاكرة <وأ href = "http://blogs.msdn.com/debuggingtoolbox/archive/2008/02/23/special-command-analyzing-and-seeing-the-raw-call-stack-using-the-d-command -و-في-variations.aspx "يختلط =" نوفولو noreferrer "> د

وحدة دينارا! typedef وADDR

ومنها مثلا، دينارا MyModule! MyClass 0x12345678

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top