Melambangkan Crash Kode Tidak Terkelola

Penting

Visual Studio App Center dihentikan pada 31 Maret 2025, kecuali untuk fitur Analitik dan Diagnostik, yang akan terus didukung hingga 30 Juni 2026. Pelajari lebih lanjut.

Diagnostik App Center mendukung proses simbolisasi kerusakan kode tidak terkelola C/C++ dalam aplikasi Anda. Anda dapat melambangkan crash kode yang tidak dikelola yang berasal dari kode NDK Android Anda, dan crash kode yang tidak dikelola diformat sebagai minidump Breakpad yang diunggah melalui API Unggah Crash.

Menggunakan Breakpad dengan App Center

Breakpad adalah pustaka dan rangkaian alat yang membantu menghasilkan jejak tumpukan C dan C++. Jejak tumpukan ini dihasilkan dari minidump file yang diproduksi setelah Breakpad terintegrasi dengan proyek Anda. Breakpad menawarkan panduan pemula untuk berintegrasi dengan aplikasi Linux, Windows, dan Mac .

Mengirim Catatan Kerusakan Breakpad ke Sentral Aplikasi

Android NDK

App Center menawarkan integrasi SDK untuk aplikasi Android menggunakan NDK untuk menjalankan kode yang tidak dikelola. Integrasi ini akan membuat minidump Breakpad dan secara otomatis mengunggahnya ke App Center untuk Anda.

Aplikasi Lain

Setelah Breakpad terintegrasi dengan aplikasi Anda, Anda dapat Mengunggah log crash Breakpad dan minidump ke App Center.

Melambangkan Crash Tidak Terkelola

Menghasilkan Muatan Simbol Breakpad

Untuk menghasilkan stack trace yang dapat dibaca dari minidump Breakpad, Diagnostik App Center memerlukan simbol. Arsip simbol yang diunggah harus berisi .sym file, yang diproduksi menggunakan alat Breakpad dump_syms , atau .so file biner.

Membuat file .zip untuk diunggah

Ada dua cara bagi App Center untuk mengambil simbol yang diperlukan untuk simbolisasi. App Center dapat menghasilkannya dari biner asli yang digunakan dalam proyek Anda, atau Anda dapat mengunggah simbol Breakpad secara langsung.

Opsi 1: Unggah biner asli

Masukkan semua file .so dari direktori proyek obj/local/$ABI/ ke dalam file .zip.

Opsi 2: Unggah simbol Breakpad

  1. Ekspor simbol menggunakan toolchain Breakpad seperti yang dijelaskan dalam dokumentasi Breakpad di bawah bagian "Dapatkan simbol debugging".
  2. Buat file symbols.zip dengan struktur berikut:

Nota

Jika Anda mengunggah simbol dari macOS, maka Anda harus membersihkan simbol dari folder asing apa pun, misalnya __MACOS akan dihasilkan dan untuk menghapusnya, Anda dapat menggunakan 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

Mengunggah Simbol ke Pusat Aplikasi

Simbol dapat diunggah melalui Portal App Center, API, atau CLI.

  1. Masuk ke App Center dan pilih aplikasi Anda.
  2. Di menu sebelah kiri, navigasikan ke bagian Diagnostik dan pilih Simbol.
  3. Di sudut kanan atas, klik Unggah simbol dan unggah file.
  4. Setelah simbol diindeks oleh App Center, crash akan dilambangkan untuk Anda.

Proses untuk mengunggah simbol melalui API melibatkan serangkaian tiga panggilan API: satu untuk mengalokasikan ruang di backend kami, satu untuk mengunggah file, dan satu untuk memperbarui status unggahan. Isi panggilan API pertama harus diatur symbol_type ke Breakpad.

  1. POST Memicu permintaan ke API symbol_uploads. Panggilan ini mengalokasikan ruang di backend kami untuk file Anda dan mengembalikan properti symbol_upload_id dan upload_url .
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. Menggunakan properti upload_url yang dikembalikan dari langkah pertama, buat permintaan PUT dengan header: "x-ms-blob-type: BlockBlob" dan berikan lokasi file Anda di disk. Panggilan ini mengunggah file ke akun penyimpanan backend kami. Pelajari selengkapnya tentang header permintaan PUT Blob .
curl -X PUT '{upload_url}' \
    -H 'x-ms-blob-type: BlockBlob' \
    --upload-file '{path to file}'
  1. Buat PATCH permintaan ke API symbol_uploads menggunakan properti yang telah symbol_upload_id dikembalikan dari langkah pertama. Dalam isi permintaan, tentukan apakah Anda ingin mengatur status unggahan ke committed (berhasil menyelesaikan) proses pengunggahan, atau aborted (tidak berhasil diselesaikan).
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" }'

Nota

API pengunggahan simbol tidak berfungsi untuk file yang lebih besar dari 256MB. Gunakan CLI App Center untuk mengunggah file-file ini. Anda dapat menginstal CLI App Center dengan mengikuti instruksi di repositori CLI App Center kami.

Mengabaikan simbol

Ketika App Center tidak memiliki semua file simbol untuk mensimbolikasi laporan crash semuanya, crash akan tercantum di tab Belum Terangkai Simbol. Simbol yang diperlukan dapat diunggah dari halaman ini, jika Anda memiliki akses ke simbol tersebut.

Jika Anda tidak dapat mengunggah simbol, Anda dapat menandainya sebagai Diabaikan dengan memilih baris dalam tabel dan mengklik tombol Abaikan versi . Tombol ini memberi tahu App Center untuk memproses kerusakan dan menyimbolkannya sepenuhnya dengan simbol yang tersedia di berkas. Setelah selesai diproses, mereka akan muncul di tab Kecelakaan yang sebagian telah disimbolkan. Crash baru yang juga bergantung pada ID simbol yang sama yang ditandai sebagai diabaikan akan melewati tab Tidak Simbolikasi saat masuk dan mengalir melalui sistem.