本文重点讲解如何根据崩溃信息找到对应的c/c++崩溃行数。
当ndk崩溃后,我们会得到下面这样的信息
这样的信息是没有办法定位问题出在哪里的。
我们可以使用工具去定位问题出在那个文件那一行
第一种方法
addr2line工具
工具位置:/Users/yuanxuzhen/Library/Android/sdk/ndk/对应版本ndk/toolchains/对应编译的平台/prebuilt/darwin-x86_64/bin/对应的addr2line
命令 /Users/yuanxuzhen/Library/Android/sdk/ndk/21.1.6352462/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-addr2line -e /Users/yuanxuzhen/StudioProjects/github/testnative/app/build/intermediates/cmake/release/obj/arm64-v8a/libyuan-lib.so 0000000000000f78
执行后会得到如下的结果
第二种方法
ndk-stack工具
工具位置:/Users/yuanxuzhen/Library/Android/sdk/ndk/对应版本ndk/ndk-stafck
命令 adb logcat | ./ndk-stack -sym /Users/yuanxuzhen/StudioProjects/github/testnative/app/build/intermediates/cmake/release/obj/对应平台so文件夹
得到结果
如果想在文件中查看
执行下面的命令
1、adb logcat > crash.txt
2、ndk-stack -sym /Users/yuanxuzhen/StudioProjects/github/testnative/app/build/intermediates/cmake/release/obj/对应平台so文件夹 -dump crash.txt > crashv2.txt
crashv2.txt存的就是具体崩溃信息