当前位置: 移动技术网 > IT编程>移动开发>Android > Android使用google breakpad捕获分析native cash

Android使用google breakpad捕获分析native cash

2019年03月30日  | 移动技术网IT编程  | 我要评论

java电子书阅读器,千山暮雪续集心有千千结,东莞招聘

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

一、chapter01 崩溃

https://github.com/androidadvancewithgeektime/chapter01

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

先检查sdk/ndk环境

 

在local.properties配置sdk/ndk

打包运行效果

 

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

 

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

 

 先克隆

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。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网