使用addr2line
抓取日子:adb logcat > D:\test.log
查看ndk carsh,找到自己相关代码的错误:
如:
中间的数字是指令地址
使用addr2line工具这个只能查询到报错行;
工具在ndk目录下:\ndk\21.1.6352462\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-addr2line.exe
自己的项目编译后so在app\build\intermediates\cmake\debug\obj\armeabi-v7a\下
没有配置全局变量就在这个地方开启命令行:
输入:arm-linux-androideabi-addr2line -C -f -e D:\work\OpenGLDemo\app\build\intermediates\cmake\debug\obj\armeabi-v7a\libnative-lib.so 001f8798 001f73f3 0000dc79
其中:
-C -f //打印错误行数所在的函数名称
-e //打印错误地址的对应路径及行数
如下,77就是抛出crash行数; ?:表示查的指令地址没在这个so中,要去另外的库查询
使用ndk-stack就要简单一些,但只能看个大概,不过也足够了
我没配全局变量,该工具在ndk目录下;
命令如下
adb logcat | ndk-stack -sym D:\work\OpenGLDemo\app\build\intermediates\cmake\debug\obj\armeabi-v7a -dump D:\test.log