AddressSanitizer-Tests in der Cloud oder verteilten Umgebungen

Sie müssen AddressSanitizer-Fehler nicht debuggen, wann und wo sie auftreten. Konfigurieren Sie die Laufzeit so, dass ein Absturzabbild erstellt wird, das den gesamten adresssanitizerspezifischen Kontext speichert, wenn ein Fehler auftritt. Senden Sie dann das Absturzabbild zum Debuggen an einen anderen PC. Das Offlinedebugging kann ein wichtiger Zeitpunkt sein, wenn AddressSanitizer in der Cloud oder verteilte Tests ausgeführt werden. Sie können das Dump für Test- oder Produktionsinfrastruktur erstellen, in der der Fehler auftritt, und sie später auf Ihrem Entwickler-PC debuggen.

Der Visual Studio-Debugger stellt genau diagnostizierte AddressSanitizer-Fehler bereit. Sie können diese Fehler anzeigen, ohne Tests erneut ausführen zu müssen, riesige Datasets zu kopieren, verlorene Daten zu entdecken oder Testcomputer zu finden, die offline gelaufen sind. Sie müssen nur das Absturzabbild laden.

Absturzabbilder werden bei AddressSanitizer-Fehlern erstellt, indem die folgende Umgebungsvariable festgelegt wird:

set ASAN_SAVE_DUMPS=MyFileName.dmp

Hinweis

Der Dateiname muss über ein Suffix .dmp verfügen, um den Benennungskonventionen von Visual Studio zu entsprechen.

Diese Dumpdatei kann mithilfe von Visual Studio zu einem späteren Zeitpunkt auf einem anderen Computer angezeigt werden.

Visual Studio kann die Fehlerinformationen im Kontext des ursprünglichen Quellcodes anzeigen. Dazu erfordert Visual Studio Debuggingsymbole und indizierten Quellcode. Für eine optimale Debugerfahrung müssen exe, PDB und Quellcode, der zum Erstellen dieser Binärdateien verwendet wird, übereinstimmen.

Weitere Informationen zum Speichern von Quellen und Symbolen finden Sie im Abschnitt "Quelle und Symbole ". Informationen zu Implementierungsdetails und fein abgestimmten Steuerelementen finden Sie unter Debuggerintegration.

Beispiel : Erstellen, Testen und Analysieren

Berücksichtigen Sie drei Computer: A, B und C. Builds werden auf Computer B ausgeführt, Tests werden auf Computer C ausgeführt, und Sie analysieren Fehler auf Computer A. Die Fehler werden anhand von Quellzeilen- und Spaltennummern im Quellcode gemeldet. Sie können den Aufrufstapel zusammen mit einer Reihe von Symbolen in der PDB-Datei sehen, die mit dieser genauen Version des Quellcodes erstellt wurde.

Die folgenden Schritte gelten für lokale oder verteilte Szenarien, die zum Erstellen einer DMP-Datei und zum Anzeigen dieser AddressSanitizer-Dumpdatei offline führen.

Lokal erstellen einer DMP-Datei

  • Build
  • Testen der ausführbaren Datei
  • Kopieren einer generierten DMP-Datei in das Buildverzeichnis
  • Öffnen Sie die DMP-Datei mit der gekoppelten PDB-Datei im selben Verzeichnis.

Produzieren eines DMP auf einem verteilten System

  • Erstellen und Verarbeiten des PDB für Quellindizierungsdatenblöcke
  • Kopieren Sie das Atompaar (.exe, .pdb) auf die Testmaschine, und führen Sie Tests aus.
  • Schreiben Sie die Atompaare von (PDB, DMP) in die Fehlerberichtsdatenbank.
  • Visual Studio öffnet eine DMP-Datei mit der gekoppelten PDB-Datei im selben Verzeichnis.

Hinweis

Der Visual Studio 2019-Computer, den Sie für die Analyse verwenden, muss Zugriff auf GitHub oder den internen \\Machine\share Speicherort ihrer indizierten Quelle haben.

AddressSanitizer-DMP-Dateien anzeigen

  1. Stellen Sie sicher, dass die Debugger-IDE Ihre PDB- und Quelldateien finden kann.

  2. Öffnen Sie Visual Studio, und wählen Sie "Weiter" ohne Code aus. Wählen Sie dann "Datei öffnen>"> aus, um das Dialogfeld "Datei öffnen" zu öffnen. Stellen Sie sicher, dass das Dateinamensuffix DMP ist.

    Screenshot of the File Open File menu in Visual Studio.

    Der hier gezeigte Bildschirm benötigt einen weiteren Schritt, um den IDE-Zugriff auf Symbole und Quelle zu ermöglichen.

  3. Legen Sie die Symbolpfade fest, und wählen Sie dann "Debuggen nur mit systemeigenem System" aus.

    Screenshot of the Minidump Summary display in Visual Studio.

Dieser Screenshot zeigt die endgültige geladene Dumpdatei mit geladenen Quellen und geladenen AddressSanitizer-Metadaten.

Screenshot of the debugger showing source files and AddressSanitizer metadata.

Quelle und Symbole

Mit dem Quellserver kann ein Client die genaue Version der Quelldateien abrufen, die zum Erstellen einer Anwendung verwendet werden. Der Quellcode für eine ausführbare Datei oder DLL kann sich im Laufe der Zeit und zwischen Versionen ändern. Sie können ihn verwenden, um denselben Quellcode zu betrachten, der eine bestimmte Version der Anwendung erstellt hat.

Beim Debuggen einer EXE mit ihrer PDB-Datei kann der Debugger den eingebetteten Quellserverdatenblock verwenden, um die entsprechenden Dateien aus der Quellcodeverwaltung abzurufen. Sie lädt die Dateien, die den vollqualifizierten Namen zugeordnet werden, die automatisch von der Compileroption in den /Zi PDB eingefügt werden.

Um den Quellserver zu verwenden, muss die Anwendung "Quellindiziert" sein, indem pdbstr.exe sie einen srcsrv Datenblock in Ihre PDB-Datei schreiben. Weitere Informationen finden Sie im Abschnitt "Datenblock" des Quellservers und der Quellindizierung. Sie finden die Schritte zum Indizieren von Quellen und Veröffentlichen von Symbolen und zum Angeben von Symbolen und Quellcode für den Debugger ebenfalls hilfreich.

Eine externe Dokumentation finden Sie unter:

Siehe auch

AddressSanitizer -Übersicht
Beheben bekannter Probleme mit demSanitizer
AddressSanitizer Build- und Sprachreferenz
AddressSanitizer-Laufzeitreferenz
AddressSanitizer-Schattenbytes
AddressSanitizer Debugger-Integration
Beispiele für AddressSanitizer-Fehler