zoukankan      html  css  js  c++  java
  • Android使用google breakpad捕获分析native cash

    Android 开发高手课 课后练习(1)

    一、Chapter01 崩溃

    https://time.geekbang.org/column/article/70602

    https://github.com/AndroidAdvanceWithGeektime/Chapter01

    1、遇到native cash时,生成.dmp文件

    先检查sdk/ndk环境

    在local.properties配置sdk/ndk

    打包运行效果

    点击CRASH按钮后生成的.dmp文件

     

     2、利用breakpad的minidump_stackwalk分析,先获取minidump_stackwalk

     https://github.com/google/breakpad

     先克隆

    git clone https://github.com/google/breakpad.git 这个项目到本地

    然后执行命令,即可拿到所需文件

    文件位置,可以拷贝到项目tools/mac/minidump_stackwalk中使用,

     执行命令./tools/mac/minidump_stackwalk sdcard/crashDump/***.dmp >crashLog.txt  后出错,先把.dmp文件拷贝到电脑上再执行该命令

     为了解决could not be read这个问题,可以使用adb pull sdcard/crashDump 拷贝手机文件到电脑上

    使用命令分析文件,生成crashLog.txt,下面是一行代码执行命令,不要分开多次执行

     ./tools/mac/minidump_stackwalk ./crashDump/***.dmp >crashLog.txt
    

    3、分析

     arm64使用 aarch64-linux-android-4.9;   arm使用arm-linux-androideabi-4.9 ,千万别看错,不然执行报错

    而且aarch64-linux-android-addr2line的路径、libcrash-lib.so的路径要按照电脑、项目中的路径保持一致

    $ANDROID_NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64/bin/aarch64-linux-android-addr2line -f -C -e sample/build/intermediates/transforms/mergeJniLibs/debug/0/lib/arm64-v8a/libcrash-lib.so 0x600
    Crash()
    /Users/apple/Documents/developer/Git/Chapter01/sample/.externalNativeBuild/cmake/debug/arm64-v8a/../../../../src/main/cpp/crash.cpp:10

      

    输出的结果是Crash,如图

    可以分析出Crash函数出现了问题

    项目已经放到github:https://github.com/libill/Chapter01

    添加了tools/mac/minidump_stackwalk、crashDump、crashLog.txt。

  • 相关阅读:
    服务器的小程序,可以通过浏览器访问该服务器自定义的内容
    GUI小程序---理解GUI
    迷你MyBank
    使用Scanner输入数据-读取文本数据
    文件拷贝代码模型
    File文件操作类
    链表
    ThreadLocal类使用理解
    二叉树
    比较器比较对象数组Comparable和Comparator区别
  • 原文地址:https://www.cnblogs.com/liqw/p/10616410.html
Copyright © 2011-2022 走看看