总结一下NDK crash排查步骤

总结一下NDK crash排查步骤:

    1. 先在PC上跑通算法
      用Visual Studio写算法的testbed,确保算法能跑通
    1. 抓log
    adb logcat -c;
    adb logcat > 1.txt 2>&1
    

    然后开notepad++,打开1.txt

    1. 分析日志文件
      查找关键字fatal以及backtrace;
      使用addr2line等工具对backtrace结果进行进一步定位:参考这篇博客
    1. android studio开启ndk代码的调试
      应当基于cmake构建;
      没有算法核心源码也可以,只要是AS工程中的C++代码就能调;
      使用logcat等进行打印(lldb调试时鼠标移动到变量上很容易导致apk停止运行,why?);
      调试时的按钮怎么用?参考这篇
    1. 把源码放进AS,源码编译出库
      如果源文件名字过长,容易导致CMake编译单个文件失败(实际上是ndk里的clang编译失败),要改短;
    1. 其他方法
      固定ndk代码中的输入,用fread从sdcard读取,保证和PC端的输入一致。
    1. 检查并关闭fprintf(stderr, "...");,实测发现写到stderr会造成crash然后app自动重启。
posted @ 2019-05-16 22:05  ChrisZZ  阅读(662)  评论(0编辑  收藏  举报