Как получить подробные отчеты о сбоях Android NDK? - PullRequest
0 голосов
/ 26 апреля 2019

Я отлаживаю огромный проект NDK в Android Studio, приложение вылетает в случайное время с сообщением, похожим на

A/libc: Fatal Signal 11 (SIGSEGV), code 1, fault addr 0x30 in fid 22993 (Thread-99505)    

Время от времени цифры разные, но ошибка похожа, и иногда на вкладке «Выполнить» в Android Studio вообще не отображается никаких ошибок, а программа просто вылетает с сообщением Application terminated

Посмотрев вокруг, я обнаружил, что android должен генерировать какой-то журнал аварий, похожий на показанный здесь

https://source.android.com/devices/tech/debug/native-crash

Но я не понимаю, как их получить, или есть какие-то настройки в Android Studio, которые позволяют мне их просматривать

Как получить такие отчеты о сбоях от Android Studio?

Android Studio версии 3.0.1 в Apple MacBook

1 Ответ

2 голосов
/ 26 апреля 2019

Вместо вкладки «Выполнить» посмотрите на Logcat.Не устанавливайте фильтр только для вашего приложения.Существует большая вероятность, что вы увидите трассировку стека, например

I/DEBUG   (   31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (   31): Build fingerprint: 'generic/google_sdk/generic/:2.2/FRF91/43546:eng/test-keys'
I/DEBUG   (   31): pid: 351, tid: 351  >>> /data/local/ndk-tests/crasher <<<
I/DEBUG   (   31): signal 11 (SIGSEGV), fault addr 0d9f00d8
I/DEBUG   (   31):  r0 0000af88  r1 0000a008  r2 baadf00d  r3 0d9f00d8
I/DEBUG   (   31):  r4 00000004  r5 0000a008  r6 0000af88  r7 00013c44
I/DEBUG   (   31):  r8 00000000  r9 00000000  10 00000000  fp 00000000
I/DEBUG   (   31):  ip 0000959c  sp be956cc8  lr 00008403  pc 0000841e  cpsr 60000030
I/DEBUG   (   31):          #00  pc 0000841e  /data/local/ndk-tests/crasher
I/DEBUG   (   31):          #01  pc 000083fe  /data/local/ndk-tests/crasher
I/DEBUG   (   31):          #02  pc 000083f6  /data/local/ndk-tests/crasher
I/DEBUG   (   31):          #03  pc 000191ac  /system/lib/libc.so
I/DEBUG   (   31):          #04  pc 000083ea  /data/local/ndk-tests/crasher
I/DEBUG   (   31):          #05  pc 00008458  /data/local/ndk-tests/crasher
I/DEBUG   (   31):          #06  pc 0000d362  /system/lib/libc.so
I/DEBUG   (   31):

Android NDK включает команду ndk-stack, которая может помочь сопоставить адреса с реальными исходными файлами вашего кода., который основан на утилите addr2line в наборе инструментов NDK.

Дальнейшие инструкции для понимания трассировки стека: https://developer.android.com/studio/debug/stacktraces

Из комментариев:
Вы можете найти «свободные» библиотеки в app / build / промежуточных / transforms / mergeJniLibs

...