http://geek.csdn.net/news/detail/50839

安卓捕获RuntimeException,ANR,Native信号异常 - 简书

android 异常捕获-UncaughtExceptionHandler - 简书 (UncaughtExceptionHandler)

https://github.com/google/breakpad/blob/master/docs/getting_started_with_breakpad.md(Breakpad)

背景

网上有一些分析native crash捕获的方法,拿来分析学习,看能不能集成到自动化里面

Android端的崩溃有两种,Java crash和Native crash,我们通常说的crash一般指的是Java层crash,Native crash主要指C/C++代码(其在Android工程中以动态链接库的形式存在)的崩溃,一般难以抓取。

一、native crash介绍

下图为Android系统框架图,NativeCrash主要就是在图中红框部分发生的崩溃。

Android中C/C++开发部分称之为NDK,Android开发中引入NDK一般是基于如下考虑:
数据安全:java层代码易被反编译,而C/C++库反汇难度较大。
性能考虑:将要求高性能的应用逻辑使用C开发,提高应用程序的执行效率。
便于移植:用C/C++写得库可以方便在其他的嵌入式平台上再次使用

二、分析方法

对于NativeCrash,其复现难度大,且需要手机root权限(Native崩溃日志存储在手机的/data/tombstones目录下)。总结目前有两种方法获取Android端线上Native Crash的崩溃信息,分别是基于开源工具google-breakpad和基于c/c++信号异常处理。

1、google-breakpad分析方法

方法介绍详细见wiki:Android端线上NativeCrash收集的两种方法(上) - 简书

Google Breakpad作为跨平台的崩溃转储和分析模块(支持Windows、OS X、Linux、iOS和Android等),便是通过类似的MiniDump机制来获取崩溃堆栈的。

通过Google Breakpad捕获信号异常,并将堆栈信息写入你指定的本地MiniDump文件中。下次启动应用程序的时候,便可以读取该MiniDump文件进行相应的操作,比如上传到后台服务器。

考虑到我们不是APP的测试,我们用logcat获取崩溃信息足够了,所以此工具没必要集成。

2、Linux信号异常捕获分析方法

so库一般通过gcc/g++编译,崩溃时会产生信号异常,当我们的代码导入第三方的so包的时候,由于c/c++代码的一些问题,产生native信号,就会造成应用直接崩掉,然后报一大堆的汇编的堆栈信息.举例如下方法:

private native int nativeRegisterHandler();
private native boolean nativeMakeError();

实行思路,就是定义一个跟底层交互的handler,当捕获到crash的时候,会通过回调得知,发生crash之后的出来,可根据得到回调之后进行处理。

存在的技术问题:

 上述方法存在的一个首要问题,是未提供底层交互的库,需要自己写。难点是如何发现native crash了。 又查找了一些方法,总结如下:

优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案 - CocoaChina_一站式开发者成长社区  (优秀开源代码解读之JS与iOS Native Code互调的优雅实现方案)

Android端线上NativeCrash收集的两种方法(下) - 简书 (Android端线上NativeCrash收集)

实现原理如下:

总结上面的方法,感觉支持难度较大(研发支持),所以目前不深入研究了。

native crash相关推荐

  1. Android Native crash 处理案例分享

    简介:Android Native crash 处理案例分享 1. 背景 目前 mPaas[1] Android使用Crash SDK对闪退进行的处理,CrashSDK 是 Android 平台上一款 ...

  2. android 中断处理流程,Android P的native crash处理流程

    一.概述 Android系统有监控程序异常退出的机制,这便是本文要讲述得debuggerd守护进程.当发生native crash或者主动调用debuggerd时,会输出进程相关的状态信息到文件或者控 ...

  3. android crash分析工具,Android Crash之Native Crash分析

    前言 上一篇给大家介绍了Android Crash中的Java Crash分析,我们可以知道Java Crash一般会弹出提示框告诉我们程序崩溃了,通常使用Crash工具都能够捕获到:本篇博客来谈谈如 ...

  4. 基于友盟+U-APM解决客户小姐姐Android Native Crash问题,小姐姐说我真棒,要把她闺蜜介绍给我

    文章目录 一.遇到问题 二.Native日志分析 三.信号量(signal) 和 错误码(code)分析 四.PC指针addr2line定位 4.1 addr2line路径 4.2 so路径 4.3 ...

  5. 理解Native Crash处理流程

    本文是基于Android 7.0源码,来分析Native Crash流程. 转自 http://gityuan.com/2016/06/25/android-native-crash/ 一.Nativ ...

  6. Android native crash解析

    当某个进程发生crash时会出现下面的错误日志,它可能出现在logcat日志或者/data/tombstones目录下的tombstone文件中 --------- beginning of cras ...

  7. Native Crash .so crash分析方法

    Native Crash是指,在用户空间的C/C++代码发生的abort.段错误.指令异常等crash问题.如果Native Crash发生在应用APK,则导致应用异常崩溃闪退,如果发生在系统关键进程 ...

  8. 当Android发生Native Crash时,Coredump能为我们带来什么信息?

    ​更多内核安全.eBPF分析和实践文章,请关注博客和公众号: CSDN博客:内核功守道 公众号: 内核功守道 1.概述 1.1 Coredump形成原因 1.2 Coredump的作用 2.使能Cor ...

  9. Android稳定性系列8 Native crash处理流程

    一 Native Crash 从系统全局来说,Crash分为Framework/App Crash, Native Crash,以及Kernel Crash. 对于framework层或者app层的C ...

最新文章

  1. bat 两个文本字符替换_数据人必会的Excel|掌握这些文本函数,让你的工作如鱼得水...
  2. 2015结束,2016开始
  3. 如何在S/4HANA里创建Custom Business object并实现自定义逻辑
  4. 手机用久了很卡怎么办?
  5. Go设计模式之Factory
  6. vs2019 product key
  7. IT大公司面试流程与总结
  8. ICMAX解析运行内存发展新趋势 LPDDR4X将会给手机带来哪些改变?
  9. vim 剪贴板历史插件
  10. 【CircuitPython】RaspberryPi Pico RP2040 自定义机械键盘实例
  11. 思科模拟器-利用VTP管理VLAN
  12. python处理图片水印
  13. 计算机如何获取知识和技能 实现自我完善,在人工智能中有一个研究领域,主要研究计算机如何获取知识和技能,实现自我完善,这门分支学科叫做。...
  14. oracle 二表做差,oracle 两表数据对比---minus
  15. java pdf去水印_java使用spire.pdf去除水印
  16. 2018 届互联网校招高薪清单曝光:25 万年薪只是白菜价?
  17. Visual Studio 编译器修改IDE背景图片
  18. Stripe国际支付平台接入
  19. Servlet+jsp开发图书管理系统流程。
  20. OpenGL二次曲面绘制

热门文章

  1. 西安的房价为什么猛涨
  2. UE4 蓝图Structure与Xml的读取
  3. Spring整合Mybatis之DAO层、Service层开发
  4. CS5266设计TYPEC转HDMI带PD和USB3.1数据传输USB-C扩展坞方案
  5. 解决 Unrecognized field xxx , not marked as ignorable 问题
  6. 计算流体力学的基本方法简介(有限差分法、有限元法、有限体积法)
  7. 一文看懂:零代码平台是什么?怎么选?
  8. [附源码]计算机毕业设计基于springboot的高校资源共享平台
  9. 有必要创建一个属于自己的维基百科企业词条吗
  10. python表单验证wtf_关于python 3.x:无法验证Flask WTF-Form