我如何获得 android NDK 详细崩溃报告?
How do I get android NDK detail crash reports?
我正在 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 获取此类崩溃报告?
Android Apple macbook 中的 Studio 版本 3.0.1
查看 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 工具链中包含一个命令 ndk-stack
that can help match the addresses with actual source files of your code, which is based on the addr2line 实用程序。
了解堆栈跟踪的进一步说明:https://developer.android.com/studio/debug/stacktraces
来自评论:
您可以在 app/build/intermediates/transforms/mergeJniLibs
下找到 'unstripped' 库
我正在 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 获取此类崩溃报告?
Android Apple macbook 中的 Studio 版本 3.0.1
查看 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 工具链中包含一个命令 ndk-stack
that can help match the addresses with actual source files of your code, which is based on the addr2line 实用程序。
了解堆栈跟踪的进一步说明:https://developer.android.com/studio/debug/stacktraces
来自评论:
您可以在 app/build/intermediates/transforms/mergeJniLibs