Table of Contents

Analisis crash di Android

Untuk crash pada Native (Android) dan Unity (Android), lihat instruksi berikut.

Mendapatkan lokasi crash selama development

Saat melakukan debug program Android Native di Android Studio, atur Debugger - Debug type menjadi Dual (Java + Native) di pengaturan Configuration.

crash Android configuratio

Informasi yang diperlukan saat debugging di Android Studio ditunjukkan di bawah ini.

crash Android stack

Masukkan bt di lldb untuk mendapatkan penyebab crash dan code stack, seperti berikut:

(lldb) bt
* thread #16, name = 'samples.helloar', stop reason = signal SIGSEGV: invalid address (fault address: 0x9c40)
* frame #0: 0x0000004922f3a1d8 libEasyAR.so`___lldb_unnamed_symbol3056$$libEasyAR.so + 6088
    frame #1: 0x0000004922f38568 libEasyAR.so`___lldb_unnamed_symbol3054$$libEasyAR.so + 288
    frame #2: 0x0000004922f347f8 libEasyAR.so`___lldb_unnamed_symbol2876$$libEasyAR.so + 332
    frame #3: 0x00000049be2390c8 libc.so`__pthread_start(void*) + 40
    frame #4: 0x00000049be1f04f8 libc.so`__start_thread + 72

Jika code stack berisi konten terkait libEasyAR.so, ini mungkin menunjukkan bahwa crash terkait dengan EasyAR. Jika tidak ada, kemungkinan besar crash tidak terkait dengan EasyAR.

Masukkan image dump sections libEasyAR.so di lldb untuk mendapatkan load address section .text pada dynamic library, seperti berikut:

(lldb) image dump sections libEasyAR.so
...
  SectID     Type             Load Address                             Perm File Off.  File Size  Flags      Section Name
...
  0x00000010 code             [0x0000004922e30cfc-0x0000004923654558)  r-x  0x00256cfc 0x0082385c 0x00000006 libEasyAR.so..text
...

Mendapatkan lokasi crash setelah release

Crash juga mungkin terjadi setelah release.

Jika terjadi crash yang dapat direproduksi, Anda dapat mencoba menggunakan tool Profile/Debug bawaan Android Studio. Kemudian ikuti metode selama development untuk mendapatkan lokasi crash.

crash Android debug

Jika crash sulit direproduksi, Anda dapat menggunakan crash reporting library untuk mencegat informasi crash aplikasi dan melaporkannya ke server. Namun perlu diperhatikan bahwa informasi crash harus mencakup dua bagian: code stack dan module load address. Karena Android memperkenalkan ASLR (address space layout randomization) sejak 4.0, load address modul dynamic library dapat berbeda setiap kali aplikasi berjalan, sehingga code address juga berubah secara dinamis. Hanya dengan mengetahui nilai relatif antara code address di code stack dan load address modul dynamic library, Anda dapat mengetahui lokasi program mengalami crash.

Jika code stack berisi konten terkait libEasyAR.so, ini mungkin menunjukkan bahwa crash terkait dengan EasyAR. Jika tidak ada, kemungkinan besar crash tidak terkait dengan EasyAR.

Informasi lain terkait crash

  • Nomor versi EasyAR Sense dan EasyAR Sense Unity Plugin

    Misalnya, 4.7.0.11800-cf8e24e30

  • Community Edition / Enterprise Edition

  • Arsitektur CPU

    aarch64/armeabi-v7a