Freigeben über


Speicherabbilddateien im Visual Studio-Debugger

Eine Dumpdatei ist eine Momentaufnahme, die den Prozess zeigt, der ausgeführt wurde, und Module, die zu einem bestimmten Zeitpunkt für eine App geladen wurden. Ein Dump, der Heap-Informationen enthält, umfasst auch eine Momentaufnahme des Speichers der App zu diesem Zeitpunkt.

Das Öffnen einer Speicherabbilddatei mit einem Heap in Visual Studio ist vergleichbar mit dem Anhalten an einem Haltepunkt in einer Debugsitzung. Obwohl Sie die Ausführung nicht fortsetzen können, können Sie die Stapel, Threads und Variablenwerte der App zum Zeitpunkt des Dumps untersuchen.

Dumps werden hauptsächlich zum Debuggen von Problemen von Computern verwendet, auf die Entwickler keinen Zugriff haben. Sie können eine Speicherabbilddatei vom Computer eines Kunden verwenden, wenn Sie einen Absturz oder ein nicht reagierendes Programm auf Ihrem eigenen Computer nicht reproduzieren können. Tester erstellen auch Dumps zum Speichern von Absturz- oder nicht reagierenden Programmdaten, die für weitere Tests verwendet werden.

Der Visual Studio-Debugger kann Dumpdateien für verwalteten oder systemeigenen Code speichern. Sie kann Von Visual Studio erstellte Speicherabbilddateien oder andere Apps debuggen, die Dateien im Minidumpformat speichern.

Anforderungen und Einschränkungen

  • Zum Debuggen von Speicherabbilddateien von 64-Bit-Computern muss Visual Studio auf einem 64-Bit-Computer ausgeführt werden.
  • Visual Studio kann Speicherabbilddateien verwalteter Apps vom Linux-Betriebssystem debuggen.
  • Visual Studio kann Abbilddateien von nativen Apps auf ARM-Geräten debuggen. Sie kann auch Abbilder verwalteter Apps von ARM-Geräten debuggen, aber nur im systemeigenen Debugger.
  • Um Kernelmodus-Dumpdateien zu debuggen oder die SOS.dll Debugerweiterung in Visual Studio zu verwenden, laden Sie die Debugtools für Windows im Windows Driver Kit (WDK) herunter.
  • Visual Studio kann keine Speicherabbilddateien debuggen, die im älteren, vollständigen Benutzermodusabbildformat gespeichert sind. Ein vollständiges Benutzermodus-Abbild ist nicht identisch mit einem Speicherabbild mit Heap.
  • Das Debuggen von Speicherabbilddateien mit optimiertem Code kann verwirrend sein. Beispielsweise kann die Compilerinlinierung von Funktionen zu unerwarteten Aufrufstapeln führen, und andere Optimierungen können die Lebensdauer von Variablen ändern.

Dumpdateien mit oder ohne Heaps

Speicherabbilddateien enthalten möglicherweise Heap-Informationen.

  • Dump-Dateien mit Heaps enthalten einen Snapshot des Speichers der App, einschließlich der Werte von Variablen, zum Zeitpunkt des Dumps. Visual Studio speichert auch die Binärdateien von geladenen nativen Modulen in einer Speicherabbilddatei mit einem Heap, wodurch das Debuggen vereinfacht werden kann. Visual Studio kann Symbole aus einer Speicherabbilddatei mit einem Heap laden, selbst wenn keine App-Binärdatei gefunden werden kann.

  • Dumpdateien ohne Heaps sind kleiner als Dumps mit Heaps, aber der Debugger muss die App-Binärdateien laden, um Symbolinformationen zu finden. Die geladenen Binärdateien müssen exakt mit denen übereinstimmen, die während der Erstellung des Speicherabbilds ausgeführt wurden. Speicherabbilddateien ohne Heaps speichern nur die Werte der Stapelvariablen.

Erstellen einer Dumpdatei

Beim Debuggen eines Prozesses in Visual Studio können Sie eine Speicherabbilddatei speichern, wenn der Debugger an einer Ausnahme oder an einem Breakpoint angehalten wurde.

Wenn just-In-Time Debugging aktiviert ist, können Sie den Visual Studio-Debugger an einen abgestürzten Prozess außerhalb von Visual Studio anfügen und dann eine Speicherabbilddatei aus dem Debugger speichern. Siehe Anfügen an ausgeführte Prozesse.

Speichern einer Dump-Datei:

  1. Wenn Sie während des Debuggens bei einem Fehler oder Haltepunkt angehalten haben, wählen Sie Debuggen>Dump speichern unter.

  2. Wählen Sie im Dialogfeld Speicherabbild speichern unter… in der Liste Dateityp die Option Minidump oder Minidump mit Heap (Standardeinstellung) aus.

  3. Navigieren Sie zu einem Pfad, und wählen Sie einen Namen für die Speicherabbilddatei aus, und wählen Sie dann "Speichern" aus.

Hinweis

Sie können Dumpdateien mit jedem Programm erstellen, das das Windows-Minidumpformat unterstützt. Beispielsweise können mit dem Procdump-Befehlszeilenhilfsprogramm von Windows Sysinternals Dumpdateien zu Prozessabstürzen anhand von Triggern oder bedarfsabhängig erstellt werden. Informationen zur Verwendung anderer Tools zum Erstellen von Dumpdateien finden Sie unter "Anforderungen und Einschränkungen ".

Öffnen einer Dumpdatei

  1. Wählen Sie in Visual Studio Datei>öffnen>Datei aus.

  2. Suchen Sie im Dialogfeld "Datei öffnen" die Dump-Datei, und wählen Sie sie aus. Es wird in der Regel eine .dmp Erweiterung haben. Wählen Sie OK aus.

    Im Fenster "Zusammenfassung der Minidumpdatei " werden Zusammenfassungs- und Modulinformationen für die Speicherabbilddatei sowie Aktionen angezeigt, die Sie ausführen können.

    Screenshot der Minidump-Zusammenfassungsseite.

  3. Unter Aktionen:

    • Wenn Sie Symbolladeorte festlegen möchten, wählen Sie "Symbolpfade festlegen" aus.
    • Um mit dem Debuggen zu beginnen, wählen Sie Nur verwaltetes Debuggen, Gemischtes Debuggen, Nur systemeigenes Debuggen.
    • Um verwalteten Speicher zu analysieren, wählen Sie "Verwalteten Speicher debuggen " aus, und lesen Sie berichte für verwaltete Typen.
    • Um einen Speicheranalysator auf dem Dump auszuführen, wählen Sie Diagnoseanalyse ausführen und siehe Debuggen eines verwalteten Speicherauszugs mit .NET-Diagnoseanalyzern.

Suchen nach EXE-, PDB- und Quelldateien

Um alle Debugging-Funktionen für eine Speicherabbilddatei zu verwenden, benötigt Visual Studio Folgendes:

  • Die .exe Datei, für die das Dump erstellt wurde, und andere Binärdateien (z. B. DLLs), die der Dumpprozess verwendet hat.
  • Symboldateien (.pdb) für die .exe und andere Binärdateien.
  • Die .exe- und .pdb-Dateien, die exakt mit der Version und dem Build der Dateien zum Zeitpunkt der Dump-Erstellung übereinstimmen.
  • Quelldateien für die relevanten Module. Sie können die Demontage der Module verwenden, wenn Sie die Quelldateien nicht finden können.

Wenn die Speicherabbilddatei Heapdaten enthält, kann Visual Studio mit fehlenden Binärdateien für einige Module umgehen, es müssen jedoch Binärdateien für genügend Module vorhanden sein, um gültige Aufruflisten generieren zu können.

Suchpfade für .exe Dateien

Visual Studio durchsucht automatisch die folgenden Speicherorte für .exe Dateien, die nicht in der Speicherabbilddatei enthalten sind:

  • Der Ordner, der die Dumpdatei enthält.

  • Der Modulpfad, den die Speicherabbilddatei angibt. Dabei handelt es sich um den Modulpfad auf dem Computer, der das Speicherabbild erfasst hat.

  • Die Symbolpfade werden im Bereich "Werkzeuge" (oder "Debug") >Optionen unter dem Abschnitt "Alle Einstellungen>Debugging> angegeben. Sie können auch die Seite Symbole im Bereich Aktionen des Fensters Dump File Summary (Zusammenfassung der Speicherabbilddatei) öffnen. Auf dieser Seite können Sie weitere Speicherorte hinzufügen, um zu suchen.
  • Die Symbolpfade werden im Dialogfeld "Extras" (oder "Debugoptionen") > unter dem Abschnitt">" angegeben. Sie können auch die Seite Symbole im Bereich Aktionen des Fensters Dump File Summary (Zusammenfassung der Speicherabbilddatei) öffnen. Auf dieser Seite können Sie weitere Speicherorte hinzufügen, um zu suchen.

Verwenden der Seiten "Keine Binärdatei", "Keine Symbole" oder "Keine Quelle gefunden"

Wenn Visual Studio die Dateien nicht finden kann, die zum Debuggen eines Moduls im Speicherabbild erforderlich sind, wird eine Seite "Keine Binärdatei gefunden", "Keine Symbole gefunden" oder "Keine Quelle gefunden" angezeigt . Diese Seiten enthalten detaillierte Informationen zur Ursache des Problems und stellen Aktionslinks bereit, die Ihnen beim Auffinden der Dateien helfen können. Weitere Informationen finden Sie unter Angeben von Symboldateien (PDB-Dateien) und Quelldateien im Visual Studio Debugger (C#, C++, Visual Basic, F#).