总结一下NDK crash排查步骤
总结一下NDK crash排查步骤:
-
- 先在PC上跑通算法
用Visual Studio写算法的testbed,确保算法能跑通
- 先在PC上跑通算法
-
- 抓log
adb logcat -c; adb logcat > 1.txt 2>&1
然后开notepad++,打开1.txt
-
- 分析日志文件
查找关键字fatal以及backtrace;
使用addr2line等工具对backtrace结果进行进一步定位:参考这篇博客
- 分析日志文件
-
- android studio开启ndk代码的调试
应当基于cmake构建;
没有算法核心源码也可以,只要是AS工程中的C++代码就能调;
使用logcat等进行打印(lldb调试时鼠标移动到变量上很容易导致apk停止运行,why?);
调试时的按钮怎么用?参考这篇
- android studio开启ndk代码的调试
-
- 把源码放进AS,源码编译出库
如果源文件名字过长,容易导致CMake编译单个文件失败(实际上是ndk里的clang编译失败),要改短;
- 把源码放进AS,源码编译出库
-
- 其他方法
固定ndk代码中的输入,用fread从sdcard读取,保证和PC端的输入一致。
- 其他方法
-
- 检查并关闭
fprintf(stderr, "...");
,实测发现写到stderr会造成crash然后app自动重启。
- 检查并关闭
Greatness is never a given, it must be earned.