我的应用程序中一直收到致命信号11错误。我一直试图通过从Android Studio 1.3中的终端窗口调用ndk-stack工具来调试此错误,但无济于事。我已经成功下载并链接了ndk平台。
我的问题是,我必须输入什么命令到终端才能获得可读的输出。我不知道符号文件在哪里,因为某些原因我无法从我的设备中拉出墓碑,所以使用下面输出的解决方案会很棒。
此外,我仅将NDK用于此特定调试目的。我使用java构建了我的应用程序。
08-13 18:27:52.010 25202-25214/? A/libc﹕ Fatal signal 11 (SIGSEGV), code 2, fault addr 0xaec77ac0 in tid 25214 (FinalizerDaemon)
08-13 18:27:52.112 186-186/? I/DEBUG﹕ *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-13 18:27:52.112 186-186/? I/DEBUG﹕ Build fingerprint: 'google/hammerhead/hammerhead:5.1/LMY47I/1767468:user/release-keys'
08-13 18:27:52.112 186-186/? I/DEBUG﹕ Revision: '11'
08-13 18:27:52.112 186-186/? I/DEBUG﹕ ABI: 'arm'
08-13 18:27:52.112 186-186/? I/DEBUG﹕ pid: 25202, tid: 25214, name: FinalizerDaemon >>> com.exampleapp <<<
08-13 18:27:52.112 186-186/? I/DEBUG﹕ signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0xaec77ac0
08-13 18:27:52.121 186-186/? I/DEBUG﹕ r0 aec2a640 r1 00000020 r2 7463656a r3 aec2cc60
08-13 18:27:52.121 186-186/? I/DEBUG﹕ r4 aec2a640 r5 aec77ac0 r6 130a8440 r7 ffffffff
08-13 18:27:52.122 186-186/? I/DEBUG﹕ r8 6fc735b8 r9 b4a37400 sl 1314a850 fp 130a8440
08-13 18:27:52.122 186-186/? I/DEBUG﹕ ip b6e18e2c sp b3c67a68 lr b6e0c3b1 pc aec77ac0 cpsr 60070010
08-13 18:27:52.122 186-186/? I/DEBUG﹕ backtrace:
08-13 18:27:52.122 186-186/? I/DEBUG﹕ #00 pc 00077ac0 [anon:libc_malloc]
08-13 18:27:52.122 186-186/? I/DEBUG﹕ #01 pc 000223af /system/lib/libbinder.so (android::Parcel::freeDataNoInit()+22)
08-13 18:27:52.122 186-186/? I/DEBUG﹕ #02 pc 00022409 /system/lib/libbinder.so (android::Parcel::~Parcel()+4)
08-13 18:27:52.122 186-186/? I/DEBUG﹕ #03 pc 000819a3 /system/lib/libandroid_runtime.so
08-13 18:27:52.122 186-186/? I/DEBUG﹕ #04 pc 0001881d /data/dalvik-cache/arm/system@framework@boot.oat
答案 0 :(得分:2)
使用命令提示符导航到NDK根目录,创建一个名为log.txt的新文件,粘贴调试日志,然后执行此命令,将示例路径(path \ to \ your \ project \ MyProject \ myprojectname)替换为正确的一个:
ndk-stack.exe -sym C:\path\to\your\project\MyProject\myprojectname\src\main\jniLibs\armeabi -dump log.txt