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
War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top