总结一下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自动重启。

相关文章:

  • 2022-12-23
  • 2021-12-09
  • 2021-11-16
  • 2021-08-27
  • 2022-12-23
  • 2021-10-04
  • 2021-06-10
  • 2022-12-23
猜你喜欢
  • 2022-02-23
  • 2022-12-23
  • 2021-09-25
  • 2021-10-27
  • 2022-12-23
  • 2021-12-18
  • 2022-12-23
相关资源
相似解决方案