Wie ein natives Objekt in WinDbg gehen?
Frage
Ich untersuchen, was viel Speicher in meiner app Aufnahme ist. Mit Hilfe des! DumpObj Befehls, kann ich um die verwalteten Objekte bekommen. Aber wie mache ich das Äquivalent für native Objekte? Zum Beispiel hat das .NET-Objekt einen Zeiger auf nativen Code. Ich bin hier stecken ... wie mache ich das Äquivalent! DumpObj von hier aus? Ich habe alle die Quelle und Symbole.
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
Lösung
Sie können das Objekt Dump indem Sie den folgenden Befehl ausführen:
!object address.
Darüber hinaus auch die Objekt-Header abgeladen werden können. Der Objekt-Header wird immer um 18 Uhr Bytes vor dem Objekt im Speicher befindet. Es kann mit dem folgenden Befehl abgeladen werden
!dt nt!_object_header address-18h
Um die die Art herauszufinden Sie zusätzlich auch das Objekt Dump Art wollen könnte. Dies kann mit folgendem Befehl erreicht werden.
!dt nt!_object_type address-of-type
Die Adresse des Typs wird als Teil der Halde des Objekts Kopf gedruckt. Der entsprechende Feld Name ein.
Andere Tipps
Die d * Befehl sollten Sie Inhalte des Speichers geben d
dt Modul! Typedef Adr
z. B. dt MyModule! MyClass 0x12345678