Symbolisierung von Abstürzen nicht verwalteten Codes

Von Bedeutung

Visual Studio App Center wurde am 31. März 2025 eingestellt, mit Ausnahme der Analyse- und Diagnosefeatures, die bis zum 30. Juni 2026 weiterhin unterstützt werden. Weitere Informationen

App Center-Diagnose unterstützt das symbolische Analysieren von nicht verwalteten C/C++-Code-Abstürzen in Ihrer Anwendung. Sie können nicht verwaltete Codeabstürze symbolieren, die aus Ihrem Android-NDK-Code stammen, und nicht verwaltete Codeabstürze, die als Breakpad-Minidumps formatiert sind und über die Upload Crashes-API hochgeladen wurden.

Verwendung von Breakpad mit App Center

Breakpad ist eine Bibliotheks- und Toolsuite, die bei der Erstellung von C- und C++-Stapelablaufverfolgungen hilft. Diese Stapelablaufverfolgungen werden aus minidump Dateien generiert, die erstellt werden, sobald Breakpad in Ihr Projekt integriert ist. Breakpad bietet Starthandbücher für die Integration in Linux-, Windows- und Mac-Anwendungen .

Senden von Breakpad-Absturzprotokollen an das App Center

Android NDK

App Center bietet eine SDK-Integration für Android-Anwendungen mit dem NDK, um nicht verwalteten Code auszuführen. Diese Integration erstellt Breakpad-Minidumps und lädt sie automatisch in App Center hoch.

Andere Anwendungen

Sobald Breakpad in Ihre Anwendung integriert ist, können Sie Breakpad-Absturzprotokolle und Minidumps in App Center hochladen.

Symbolische Nicht verwaltete Abstürze

Generierung der Breakpad-Symbol-Datenpakete

App Center-Diagnose erfordert Symbole, um eine lesbare Stapelablaufverfolgung aus einem Breakpad-Minidump zu generieren. Das Archiv der hochgeladenen Symbole muss entweder .sym-Dateien enthalten, die mit dem Breakpad-Tool dump_syms erstellt wurden, oder .so-Binärdateien.

Generieren einer .zip Datei zum Hochladen

Es gibt zwei Möglichkeiten, wie App Center die symbole abrufen kann, die für die Symbolik erforderlich sind. App Center kann sie aus den systemeigenen Binärdateien generieren, die in Ihrem Projekt verwendet werden, oder Sie können die Breakpad-Symbole direkt hochladen.

Option 1: Hochladen nativer Binärdateien

Fügen Sie alle .so-Dateien aus dem Verzeichnis des obj/local/$ABI/ Projekts in eine .zip Datei ein.

Option 2: Hochladen von Breakpadsymbolen

  1. Speichern Sie die Symbole mithilfe der Breakpad-Toolchain, wie in der Breakpad-Dokumentation im Abschnitt "Erhalten Sie die Debugging-Symbole" beschrieben.
  2. Erstellen Sie eine symbols.zip Datei mit der folgenden Struktur:

Hinweis

Wenn Sie Ihre Symbole von macOS hochladen, müssen Sie ihre Symbole von zusätzlichen Ordnern bereinigen, z. B. __MACOS generiert und gelöscht werden können zip -d <symbols.zip> __MACOSX/\*.

$ unzip -l symbols.zip
Archive:  symbols.zip
  Length     Date   Time    Name
 --------    ----   ----    ----
        0  07-22-13 15:07   symbols/
        0  07-22-13 15:07   symbols/libnative.so/
        0  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/
    12468  07-22-13 15:07   symbols/libnative.so/EAC901FB6DDCCE8AED89E1A8E4A58360/libnative.so.sym
        0  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/
    12467  07-22-13 15:07   symbols/libnative.so/FDC5C9E715C4F16408C0B78F95855BF0/libnative.so.sym
 --------                   -------
    24935                   6 files

Hochladen von Symbolen in das App Center

Symbole können über das App Center-Portal, die API oder die CLI hochgeladen werden.

  1. Melden Sie sich beim App Center an, und wählen Sie Ihre App aus.
  2. Navigieren Sie im linken Menü zum Abschnitt "Diagnose ", und wählen Sie "Symbole" aus.
  3. Klicken Sie in der oberen rechten Ecke auf "Symbole hochladen ", und laden Sie die Datei hoch.
  4. Nachdem die Symbole vom App Center indiziert wurden, werden Abstürze für Sie symbolisch dargestellt.

Der Prozess zum Hochladen von Symbolen über die API umfasst eine Reihe von drei API-Aufrufen: eines zum Zuweisen von Speicherplatz auf unserem Back-End, eines zum Hochladen der Datei und eines zum Aktualisieren des Status des Uploads. Der Text des ersten API-Aufrufs sollte symbol_type auf Breakpad setzen.

  1. Auslösen einer POST Anforderung an die symbol_uploads-API. Mit diesem Aufruf wird Speicherplatz auf unserem Back-End für Ihre Datei zugewiesen und eine symbol_upload_idupload_url Eigenschaft zurückgegeben.
curl -X POST 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{JSON BODY}'
  1. Erstellen Sie mithilfe der eigenschaft, die upload_url aus dem ersten Schritt zurückgegeben wird, eine PUT Anforderung mit dem Header: "x-ms-blob-type: BlockBlob" und geben Sie den Speicherort der Datei auf dem Datenträger an. Dieser Aufruf lädt die Datei in unsere Back-End-Speicherkonten hoch. Erfahren Sie mehr über PUT Blob-Anforderungsheader .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Stellen Sie eine PATCH Anforderung an die symbol_uploads-API mithilfe der Eigenschaft, die im ersten Schritt zurückgegeben wurde. Geben Sie im Textkörper der Anforderung an, ob Sie den Status des Uploads auf committed den (erfolgreich abgeschlossenen) Uploadvorgang oder aborted (erfolglos abgeschlossen) festlegen möchten.
curl -X PATCH 'https://api.appcenter.ms/v0.1/apps/{owner_name}/{app_name}/symbol_uploads/{symbol_upload_id}' \
    -H 'accept: application/json' \
    -H 'X-API-Token: {API TOKEN}' \
    -H 'Content-Type: application/json' \
    -d '{ "status": "committed" }'

Hinweis

Die Symboluploads-API funktioniert nicht für Dateien, die größer als 256 MB sind. Verwenden Sie die App Center CLI, um diese Dateien hochzuladen. Sie können die App Center CLI installieren, indem Sie die Anweisungen in unserem App Center CLI-Repository befolgen.

Ignorieren von Symbolen

Wenn App Center nicht über alle Symboldateien verfügt, um vollständig symbolische Absturzberichte zu erstellen, werden die Abstürze auf der Registerkarte " Nicht symboliert " aufgeführt. Die erforderlichen Symbole werden von dieser Seite hochgeladen, wenn Sie Zugriff darauf haben.

Wenn Sie die Symbole nicht hochladen können, können Sie sie als ignoriert markieren, indem Sie Zeilen in der Tabelle auswählen und auf die Schaltfläche " Versionen ignorieren " klicken. Diese Schaltfläche weist App Center an, die Abstürze zu verarbeiten und sie so vollständig wie möglich mit den Symbolen in der Datei zu symbolisieren. Nachdem sie die Verarbeitung abgeschlossen haben, werden sie auf der Registerkarte „Abstürze“ teilweise symbolisiert angezeigt. Neue Abstürze, die auch von den gleichen Symbol-IDs abhängen, die als ignoriert gekennzeichnet sind, umgehen die Registerkarte Unsymbolisiert, sobald sie eintreffen und durch das System fließen.