Pemecahan masalah dan FAQ Crashlytics


Halaman ini memberikan bantuan pemecahan masalah dan jawaban atas pertanyaan umum (FAQ) tentang penggunaan Crashlytics. Jika tidak dapat menemukan hal yang Anda cari atau membutuhkan bantuan lainnya, hubungi dukungan Firebase.

FAQ/pemecahan masalah umum

Anda mungkin melihat dua format berbeda untuk masalah yang tercantum dalam tabel Issues di Firebase console. Anda mungkin juga melihat fitur yang disebut "varian" dalam beberapa masalah. Berikut adalah alasannya.

Pada awal 2023, kami meluncurkan mesin analisis yang telah ditingkatkan untuk mengelompokkan peristiwa serta desain yang diperbarui dan beberapa fitur lanjutan untuk masalah baru (seperti varian). Lihat postingan blog terbaru kami untuk semua detailnya, tetapi Anda dapat membaca penjelasannya di bawah.

Crashlytics menganalisis semua peristiwa dari aplikasi Anda (seperti error, non-fatal, dan ANR) dan membuat kelompok peristiwa yang disebut masalah — semua peristiwa dalam masalah memiliki titik kegagalan yang sama.

Untuk mengelompokkan peristiwa ke dalam masalah ini, mesin analisis yang telah ditingkatkan kini melihat banyak aspek peristiwa, termasuk frame dalam stack trace, pesan pengecualian, kode error, dan karakteristik platform atau jenis error lainnya{101 }.

Namun, dalam kelompok peristiwa ini, stack trace yang mengarah ke kegagalan mungkin berbeda. Stack trace yang berbeda dapat berarti penyebab utama yang berbeda. Untuk merepresentasikan kemungkinan perbedaan ini dalam masalah, kami sekarang membuat varian dalam masalah - setiap varian adalah subgrup peristiwa dalam masalah yang memiliki titik kegagalan yang sama dan stack trace yang serupa. Dengan varian, Anda dapat men-debug stack trace yang paling umum dalam suatu masalah dan menentukan apakah penyebab utama yang berbeda menyebabkan kegagalan tersebut.

Berikut adalah hal yang akan Anda temukan dengan peningkatan ini:

  • Metadata yang diperbarui ditampilkan dalam baris Issue
    Kini lebih mudah untuk memahami dan menanggulangi masalah di aplikasi Anda.

  • Lebih sedikit masalah duplikat
    Perubahan nomor baris tidak menyebabkan masalah baru.

  • Proses debug yang lebih mudah untuk masalah yang kompleks dengan penyebab utama berbeda
    Gunakan varian untuk men-debug stack trace yang paling umum dalam suatu masalah.

  • Peringatan dan sinyal yang lebih bermakna
    Masalah baru benar-benar mewakili bug baru.

  • Penelusuran yang lebih canggih
    Setiap masalah berisi metadata yang lebih mudah ditelusuri, seperti jenis pengecualian dan nama paket.

Berikut adalah peningkatan yang diluncurkan:

  • Saat mendapatkan peristiwa baru dari aplikasi Anda, kami akan memeriksa apakah peristiwa tersebut cocok dengan masalah yang ada.

  • Jika tidak ada kecocokan, kami akan otomatis menerapkan algoritme pengelompokan peristiwa yang lebih cerdas ke peristiwa tersebut dan membuat masalah baru dengan desain metadata yang diubah.

Ini adalah update besar pertama yang kami buat pada pengelompokan peristiwa. Jika Anda memiliki masukan atau mengalami masalah, beri tahu kami dengan mengirimkan laporan.

Jika Anda tidak melihat metrik bebas error (seperti pengguna dan sesi bebas error) dan/atau pemberitahuan kecepatan, pastikan Anda menggunakan Crashlytics SDK v10.8.0+.

Jika Anda tidak melihat log breadcrumb, sebaiknya periksa konfigurasi aplikasi Anda untuk Google Analytics. Pastikan Anda memenuhi persyaratan berikut:

Untuk mengupload dSYM project Anda dan mendapatkan output panjang, periksa hal-hal berikut:

  1. Pastikan fase build project Anda berisi skrip eksekusi Crashlytics, yang memungkinkan Xcode mengupload dSYM project Anda saat waktu build (baca Menginisialisasi Crashlytics untuk mendapatkan petunjuk tentang cara menambahkan skrip). Setelah memperbarui project, buat error secara sengaja dan pastikan error tersebut muncul di dasbor Crashlytics.

  2. Jika melihat pemberitahuan "Missing dSYM" di Firebase console, periksa Xcode guna memastikannya membuat dSYM dengan benar untuk build yang bersangkutan.

  3. Jika Xcode menghasilkan dSYM dengan benar namun dSYM masih tidak ada, kemungkinan alat eksekusi skrip macet saat mengupload dSYM. Dalam kasus ini, coba setiap hal berikut:

    • Pastikan Anda menggunakan Crashlytics versi terbaru.

    • Upload file dSYM yang tidak ada secara manual:

      • Opsi 1: Gunakan opsi "Tarik lalu Lepas" berbasis konsol di tab dSYMs untuk mengupload file zip yang berisi file dSYM yang tidak ada.
      • Opsi 2: Gunakan skrip upload-symbols untuk mengupload file dSYM yang tidak ada, untuk UUID yang disediakan di tab dSYMs.
  4. Jika Anda terus melihat bahwa dSYM tidak ada, atau upload masih gagal, hubungi Dukungan Firebase dan pastikan untuk menyertakan log Anda.

Jika pelacakan tumpukan tampaknya tidak disimbolkan dengan baik, periksa hal-hal berikut:

  • Jika frame dari library aplikasi Anda tidak memiliki referensi ke kode aplikasi, pastikan -fomit-frame-pointer tidak ditetapkan sebagai flag kompilasi.

  • Jika Anda melihat beberapa frame (Missing) untuk library aplikasi Anda, periksa apakah ada dSYM opsional yang tercantum sebagai tidak ada (untuk versi aplikasi yang terpengaruh) di tab dSYMs Crashlytics di Firebase console. Jika ya, ikuti langkah pemecahan masalah "Pemberitahuan dSYM yang tidak ada" di FAQ terkait dSYM tidak ada/tidak diupload di halaman ini. Perlu diperhatikan bahwa mengupload dSYM ini tidak akan menyimbolkan error yang sudah terjadi, tetapi ini akan membantu memastikan simbolisasi untuk error mendatang.

Catatan memungkinkan anggota project untuk mengomentari masalah tertentu dengan pertanyaan, update status, dll.

Saat anggota project memposting catatan, catatan tersebut akan diberi label dengan email akun Google-nya. Alamat email ini akan terlihat bersama dengan catatan oleh semua anggota project yang memiliki akses untuk melihat catatan tersebut.

Berikut ini akan dijelaskan tentang akses yang diperlukan untuk melihat, menulis, dan menghapus catatan:

Lihat bagian Memahami metrik bebas error.

Catatan memungkinkan anggota project untuk mengomentari masalah tertentu dengan pertanyaan, update status, dll.

Saat anggota project memposting catatan, catatan tersebut akan diberi label dengan email akun Google-nya. Alamat email ini akan terlihat bersama dengan catatan oleh semua anggota project yang memiliki akses untuk melihat catatan tersebut.

Berikut ini akan dijelaskan tentang akses yang diperlukan untuk melihat, menulis, dan menghapus catatan:

Integrasi

Jika project Anda menggunakan Crashlytics bersama dengan Google Mobile Ads SDK, mungkin terjadi gangguan dari pelapor error saat pengendali pengecualian didaftarkan. Untuk memperbaiki masalah ini, nonaktifkan pelaporan error di Mobile Ads SDK dengan memanggil disableSDKCrashReporting.

Setelah Anda menautkan Crashlytics ke BigQuery, set data baru yang Anda buat secara otomatis berada di Amerika Serikat, terlepas dari lokasi project Firebase Anda.

Dukungan platform

Ya, Anda dapat menerapkan Crashlytics dalam project macOS dan tvOS. Pastikan untuk menyertakan v8.9.0+ dari Firebase SDK untuk Google Analytics, sehingga error akan memiliki akses ke metrik yang dikumpulkan oleh Google Analytics (pengguna bebas error, rilis terbaru, pemberitahuan kecepatan, dan log breadcrumb).

Kini Anda dapat melaporkan error untuk beberapa aplikasi dalam satu project Firebase, bahkan ketika aplikasi di-build untuk platform Apple yang berbeda-beda (misalnya, iOS, tvOS, dan Mac Catalyst). Sebelumnya, setiap aplikasi harus memiliki project Firebase masing-masing jika berisi ID paket yang sama.

Masalah yang mengalami regresi

Sebuah masalah mengalami regresi saat sebelumnya Anda telah menutupnya, tetapi Crashlytics mendapatkan laporan baru bahwa masalah tersebut muncul kembali. Crashlytics otomatis akan membuka kembali masalah yang mengalami regresi ini agar Anda dapat mengatasinya sebagaimana mestinya untuk aplikasi Anda.

Berikut contoh skenario yang menjelaskan cara Crashlytics mengategorikan masalah sebagai regresi:

  1. Untuk pertama kalinya, Crashlytics mendapatkan laporan error terkait Error "A". Crashlytics akan membuka masalah terkait untuk error tersebut (Masalah "A").
  2. Anda dapat memperbaiki bug ini dengan cepat, menutup Masalah "A", lalu merilis versi baru aplikasi.
  3. Crashlytics akan menerima laporan lain tentang Masalah "A" setelah Anda menutup masalah.
    • Jika laporan berasal dari versi aplikasi yang diketahui Crashlytics saat Anda menutup masalah (artinya versi tersebut telah mengirimkan laporan error untuk error apa pun), Crashlytics tidak akan menganggap masalah tersebut sebagai regresi. Masalah akan tetap ditutup.
    • Jika laporan berasal dari versi aplikasi yang tidak diketahui Crashlytics saat Anda menutup masalah (artinya versi sama sekali tidak pernah mengirim laporan error untuk error apa pun), Crashlytics akan menganggap masalah mengalami regresi dan akan membuka kembali masalah tersebut.

Saat masalah mengalami regresi, kami mengirimkan pemberitahuan deteksi regresi dan menambahkan sinyal regresi ke masalah tersebut untuk memberi tahu Anda bahwa Crashlytics telah membuka kembali masalah ini. Jika Anda tidak ingin masalah dibuka kembali karena algoritma regresi kami, "nonaktifkan" masalah, bukan menutupnya.

Jika laporan berasal dari versi aplikasi lama yang belum pernah mengirim laporan error apa pun saat Anda menutup masalah, maka Crashlytics akan mempertimbangkan masalah yang mengalami regresi dan membuka kembali masalah tersebut.

Situasi ini dapat terjadi dalam situasi berikut: Anda telah memperbaiki bug dan merilis versi baru aplikasi, tetapi Anda masih memiliki pengguna di versi lama tanpa perbaikan bug. Jika, kebetulan, salah satu versi lama tersebut tidak pernah mengirim laporan error sama sekali saat Anda menutup masalah, dan pengguna tersebut mulai menemukan bug, maka laporan error tersebut akan memicu masalah yang mengalami regresi.

Jika Anda tidak ingin masalah dibuka kembali karena algoritma regresi kami, "nonaktifkan" masalah, bukan menutupnya.