Gunakan LogBrew Swift 0.1.6 atau yang lebih baru. Gunakan LogBrew CLI native
0.1.24 atau yang lebih baru untuk mengunggah artefak debug.
Rencanakan batas perekaman
Periksa kapan aplikasi Anda bisa me-replay setiap jenis kegagalan.
Tetapkan nilai rilis sebelum build. Nilai ini harus mengidentifikasi versi dan
build aplikasi. Gunakan nilai yang sama di SDK, unggahan dSYM, dan filter
masalah.
Jangan lampirkan payload pengguna, body permintaan, atau header ke metadata
crash.
Tambahkan produk crash
Pertama, siapkan telemetri SDK untuk aplikasi Anda dengan panduan Integrasi SDK. Replay memakaiclient dan
transport dari penyiapan itu.
Tambahkan SDK publik melalui Swift Package Manager.
LogBrew untuk mengirim telemetri. Tambahkan LogBrewCrash
hanya jika aplikasi secara eksplisit mengaktifkan perekaman crash atau hang
native.
Integrasi perekaman mendukung iOS 15 atau yang lebih baru. Simpan satu objek
perekaman milik aplikasi, karena handler fatal native berlaku untuk seluruh
proses.
Konfigurasikan satu identitas yang tepat
Gunakan proyek, rilis, lingkungan, dan layanan yang sama di penyiapan runtime dan unggahan artefak. LogBrew tidak menyimpulkan nilai ini dari data lain dan tidak menggantinya.NativeCrashConfiguration punya dua batas opsional:
Nilai di luar rentangnya membuat konfigurasi melempar
crash_invalid_configuration.
Aktifkan perekaman hang
Perekaman hang mati jikawatchdog bernilai nil. Untuk mengaktifkannya,
ganti deklarasi watchdog di atas sebelum Anda memanggil install():
artifactIdentity. Tanpa itu, konfigurasi melempar
crash_invalid_configuration.
Simpan satu objek crashCapture selama proses berjalan. Objek perekaman
kedua tidak bisa dipasang. Panggilan install() pada objek itu melempar
crash_capture_owned. Untuk mengubah ambang batas, gunakan nilai baru pada
peluncuran aplikasi berikutnya.
Hang yang pulih di-replay dengan crash.handled bernilai true. Hang yang
masih berlangsung saat proses dihentikan di-replay dengan crash.handled
bernilai false.
Kedua bentuk menyertakan metadata numerik durationMs. Keduanya
mempertahankan identitas artefak yang sama dengan yang dipakai frame crash
fatal.
Watchdog berhenti sementara saat aplikasi tidak aktif atau sedang terhubung ke
debugger. Watchdog juga menahan perekaman saat tekanan termal tinggi.
Ambang batas yang pendek bisa melaporkan pekerjaan main thread yang normal
sebagai hang. Uji ambang batas dengan konfigurasi build yang Anda rilis.
Status ditangani menunjukkan bahwa aplikasi sudah pulih. Status itu tidak
menandai masalah sebagai selesai. Hang yang ditangani tetap sempat memblokir antarmuka, jadi
tinjau juga hang itu.
Replay setelah peluncuran
Setelah objek perekaman terpasang, jalankan replay untuk laporan yang tertunda melalui klien SDK Anda.maxReplayBytes. Periksa ketiga jumlah itu. Jumlah tertunda yang bernilai
nol saja tidak membuktikan pengiriman.
Aktifkan pengiriman tahan lama sebelum replay jika permintaan yang gagal
harus bertahan setelah restart berikutnya. Jangan panggil purge() selama
pemulihan jaringan atau autentikasi yang rutin.
Unggah dSYM yang cocok
Arsipkan aplikasi dengan informasi debug aktif. Simpan dSYM dari build yang sama persis dengan yang dijalankan pengguna. Periksa UUID image di dalamnya.--expect-image-uuid untuk setiap arsitektur yang diperlukan.
Perintah gagal jika kumpulan UUID yang ditemukan berbeda dari kumpulan yang
diharapkan.
Periksa akses akun. Lalu jalankan perintah yang sama tanpa --dry-run.
status di JSON menunjukkan hasilnya:
Mesin build bisa mengunggah dengan kunci artefak proyek di
LOGBREW_TOKEN,
bukan dengan akses akun. Buat kunci seperti yang ditunjukkan di
Buat kunci artefak. Unggahan
itu melaporkan uploaded. Verifikasi setiap identitas nanti dengan akses
akun:
status: "found" mengonfirmasi artefak. status: "missing" berarti LogBrew
tidak punya artefak untuk identitas itu.
Pemetaan frame mencocokkan UUID image dan identitas artefak lengkap, bukan
nama file sumber. Build ulang dari sumber yang sama bisa menghasilkan UUID
yang berbeda. Unggah bundle dSYM yang persis, bukan seluruh direktori build.
Verifikasi hasil yang dibaca dari LogBrew
Filter daftar masalah dengan lingkup runtime yang sama. Contoh ini memilih masalahunresolved. Masalah yang sudah selesai atau diarsipkan tidak
muncul.
symbolication. Contoh ini menampilkan
sebagian kolom dari masalah dengan frame yang sudah dipetakan, bukan respons
lengkap.
Baca bukti crash
Setiap frame punyastatus sendiri. Kolom symbolication.status memakai
nilai yang sama:
Tetap catat frame yang belum dipetakan sebagai belum dipetakan. Jangan
laporkan frame itu sebagai stack kosong.
LogBrew memetakan frame saat Anda membaca masalah. dSYM yang diunggah
belakangan bisa memetakan frame dari peristiwa yang lebih awal. dSYM itu
tidak bisa menambahkan frame yang tidak direkam peristiwa.
Frame aplikasi mempersempit pencarian kode, tetapi tidak membuktikan
penyebab. Untuk breadcrumb, rantai exception, dan bukti trace, baca
investigasi masalah:
source: "symbolicated" berasal dari
artefak yang diunggah. Frame dengan source: "captured" adalah lokasi yang
dikirim aplikasi. Lihat Investigasi masalah
untuk kolom respons.
Pertahankan lingkup lengkap proyek, rilis, lingkungan, dan layanan di setiap
pembacaan. Jangan perluas pencarian yang gagal ke proyek lain.
Verifikasi penyiapan produksi
Gunakan kegagalan uji yang disetujui di build yang sudah di-deploy. Jangan pernah memakai tindakan pelanggan sebagai pemicu. Periksa setiap item secara berurutan dan berhenti di kegagalan pertama:- Identitas runtime cocok dengan identitas artefak yang diunggah.
- Peluncuran berikutnya me-replay satu peristiwa yang dikonfirmasi, dengan nol laporan yang dibuang dan nol laporan yang tertunda.
- Daftar masalah dalam lingkup itu mengembalikan masalah uji dengan status ditangani yang diharapkan.
- Frame aplikasi yang diharapkan berhasil dipetakan.
- Peluncuran bersih berikutnya tidak menambahkan kemunculan lain.
Pulihkan dengan aman
Untuk investigasi masalah secara umum lewat API, lihat
Investigasi masalah.
