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。
Android使用google breakpad捕获分析native cash的更多相关文章
- QT中使用google breakpad捕获程序崩溃异常
今天给大家介绍一个在linux下如何捕获程序崩溃异常的方法 一.google breakpad源码的下载和编译 1.https://github.com/google/breakpad.git,源码地 ...
- Qt 使用 Google Breakpad 捕获程序崩溃报告(dump文件) good
http://blog.csdn.net/GoForwardToStep/article/details/56685810
- C++库(Google Breakpad)
Google Breakpad是什么? 一个开源的多平台崩溃报告系统. Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块,它支持Windows,Linux和Mac和Solari ...
- Google BreakPad使用集
Google Breakpad 学习笔记 - 简书 Qt中使用Google Breakpad捕获程序崩溃异常_Linux编程_Linux公社-Linux系统门户网站
- google breakpad 使用初步总结
项目地址:https://code.google.com/p/google-breakpad/ 访问不了请挂VPN 这是一个由google主导的开源项目,官方介绍为:An open-source ...
- an introduction of google breakPad for android
一.背景 众所周知,Android JNI层的Crash问题是个比较头疼的问题.相对Java层来说,由于c/c++造成的crash没有输出如同 Java的Exception Strace,所以cras ...
- x86 Android游戏开发专题篇之使用google breakpad捕捉c++崩溃(以cocos2dx为例)
近期一直都在x86设备上进行游戏开发.就c++层和Android java层倒没有什么要特别注意的(除了须要注意一下改动Application.mk指定平台外),在c++崩溃的时候,非常多时候看不到堆 ...
- Android BroadcastAnyWhere(Google Bug 17356824)漏洞具体分析
Android BroadcastAnyWhere(Google Bug 17356824)漏洞具体分析 作者:简行(又名 低端码农) 继上次Android的LaunchAnyWhere组件安全漏洞后 ...
- Google Breakpad 完全解析(二) —— Windows前台实现篇
原创文章,转载请标明出处:Soul Apogee (http://bigasp.com),谢谢. 好,看完了如何使用breakpad,我们现在看看breakpad在Windows下到底是如何实现的呢? ...
随机推荐
- Vue初学跳坑
1. uncaught TypeError: Cannot read property '0' of undefined <div class="home-module-wrap&qu ...
- 关于Java的散列桶, 以及附上一个案例-重写map集合
为速度而散列: SlowMap.java说明了创建一个新的Map并不困难.但正如它的名称SlowMap所示,它不会很快,如果有更好的选择就应该放弃它.它的问题在于对键的查询,键没有按照任何特定的顺序保 ...
- jquery-layer弹框在火狐浏览器中弹框不显示的问题
在使用layer控件设置弹框时, 谷歌浏览器中能正常弹出, 显示在页面中央位置. 而在火狐浏览器中, 弹框只显示标题, 并且弹框内容不显示. 在火狐浏览器中弹框的效果如下图红色方框中的弹出框所示, 但 ...
- WPF 毛笔字
1.先来看看InkCanvas的一般用法: <InkCanvas> <InkCanvas.DefaultDrawingAttributes> < ...
- Java 架构师眼中的 HTTP 协议
HTTP 协议的内容比较多,本文我们将分六部分来介绍. HTTP 协议的基本内容 什么是 HTTP 协议 首先我们来看协议是什么?协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守有规则的文 ...
- Project facet Java version 1.8 not supported JDK版本不对无法启动项目解决办法
https://jingyan.baidu.com/article/6c67b1d69a59a02787bb1e30.html
- 部署项目到tomcat步骤参考如下 2017.7.10
http://jingyan.baidu.com/article/a501d80c0c65baec630f5ef6.html
- 『自我の感悟』alt or title?
img标签中alt和title属性的正确使用:在的img标签有两个属性分别为alt和title,对于很多初学者而言对这两个属性的正确使用都还抱有迷惑,当然这其中一部分原因也是ie浏览器所导致的.正确的 ...
- 任务调度--spring下的任务调度quartz
之前写过Timer实现任务调度,这篇文章用来写一下在spring下使用quartz实现任务调度,直接上代码: 定义任务对象: package com; /** * 1. 定义任务对象 * * @aut ...
- app后端设计(9)-- 动态通知
在app中,例如在通知界面,当新通知的时候,需要显示有多少条通知,用户点击"获取新通知"后,就能看到新的通知. 那么在app端,怎么才能知道有多少条新通知? 实现的技术有两种: 1 ...