如何获取android NDK详细崩溃报告?

时间:2019-04-26 00:16:59

标签: android debugging android-ndk adb android-studio-3.0

我正在Android Studio中调试一个巨大的NDK项目,该应用在崩溃的同时随机崩溃,并显示类似

的消息
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获取此类崩溃报告?

Apple Macbook中的Android Studio版本3.0.1

1 个答案:

答案 0 :(得分:2)

查看“ 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,该命令可以帮助将地址与代码的实际源文件进行匹配,该命令基于NDK工具链中的addr2line实用程序。

进一步了解堆栈跟踪的说明:https://developer.android.com/studio/debug/stacktraces

来自评论:
您可以在app / build / intermediates / transforms / mergeJniLibs下找到“未剥离”的库