Begrenzen !dumpheap (windbg) ausgegeben, um n Objekte
Bei der Verwendung von windbg und läuft!!!dumpheap-Befehl, um die Adressen von Objekten, wie können Sie das limit auf eine bestimmte Anzahl von Objekten. Der einzige Weg den ich fand, war mit STRG+PAUSE
und eine Befehlszeile auf einem blog http://dotnetdebug.net/2005/07/04/dumpheap-parameters-and-some-general-information-on-sos-help-system/
-l X - Druckt nur X items von jedem Haufen, anstatt alle Objekte.
Scheinbar-l existiert nicht mehr SOS.dll
- Ich weiß, das ist eine alte Frage, aber haben Sie zu verwalten, um herauszufinden, eine Antwort?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie tatsächlich gesucht hat? Bevor auf die einzelnen Objekte, ist es üblich, engen Bereich von Interesse.
Die –stat-Schalter zeigt eine Zusammenfassung, pro Art der Objekte auf dem heap.
DumpHeap [-stat] [min ][-max -] [- thinlock] [-mt -] [- type ][start [end]]
Den start-parameter beginnt die Liste der angegebenen Adresse. Der parameter end beendet listing an der angegebenen Adresse.
Ref.
cntrl + break
Sie können Glück mit der Tötung der Ausgabe, bevor es unhandlich wirdNach welchen Kriterien möchten Sie begrenzen Sie die Anzahl der Ausgänge?
Die -l-option nur begrenzt die Ausgabe nach Zeilen-Nummern. Dies nutzlos ist: sagen wir, es zeigt nur die ersten 10 Objekte, vielleicht das Objekt, das Sie suchen, ist nicht einmal aufgeführt.
Wenn die Ausgabe zu lang für WinDbgs output-Fenster verwenden .logopen dump-Objekte in eine Datei und überprüfen Sie dann die Datei mit einem text-editor.
Wenn du andere Ideen hast, wie dein Objekt aussieht, können Sie durch ausführen einer Schleife über alle Objekte
und dann entscheiden, mit
.if
ob oder nicht Ihr Objekt, die diesen Kriterien entsprechen.Als ein Beispiel, war ich auf der Suche nach einer Nadel im Heuhaufen. Ich war auf der Suche einem bestimmten Hash-Tabelle in einem Programm mit mehr als 3000 Hashtables auf dem heap. Den Befehl habe ich versucht zu nutzen, war
1C
ist der offset des Grafen Mitglied der hashtable.100
ist die Anzahl der Elemente der Hashtable war zu erwarten, dass mindestens.Leider funktionierte es nicht für Hashtables sofort, weil
!dumpheap -type
auch aufgeführt HashtableEnumerators die irgendwie abgestürzt debugger.Dump hashtables nur, laufen
!dumpheap -stat
und herauszufinden, die Methode Tabelle von hashtables und führen Sie den Befehl mit-mt <methodtable>
statt-type <classname>
, die gibt-mt
mit der Methode Tabelle Adresse derHashTable
. Sie erhalten diese Informationen durch ausführen!dumpheap -stat
und suchen Sie dann nachHashTable
für die Methode address-Tabelle.