android native crash的处理机制
拦截所有信号
Linux信号机制
1.程序奔溃在Unix-like系统中,所有的崩溃都是编程错误或者硬件错误相关的,系统遇到不可恢复的错误时会触发崩溃机制让程序退出,如除零、段地址错误等。异常发生时,CPU通过异常中断的方式,触发异常处理流程。不同的处理器,有不同的异常中断类型和中断处理方式。linux把这些中断处理,统一为信号量,可以注册信号量向量进行处理。信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号。2.信号机制函数运行在用户态,当遇到系统调用、中断或是异常的情况时,程序会进入内核态。信号涉及到了这两种状态之间的转换。(1) 信号的接收接收信号的任务是由内核代理的,当内核接收到信号后,会将其放到对应进程的信号队列中,同时向进程发送一个中断,使其陷入内核态。注意,此时信号还只是在队列中,对进程来说暂时是不知道有信号到来的。(2) 信号的检测进程陷入内核态后,有两种场景会对信号进行检测:进程从内核态返回到用户态前进行信号检测
进程在内核态中,从睡眠状态被唤醒的时候进行信号检测
当发现有新信号时,便会进入下一步,信号的处理。(3) 信号的处理信号处理函数是运行在用户态的,调用处理函数前,内核会将当前内核栈的内容备份拷贝到用户栈上,并且修改指令寄存器(eip)将其指向信号处理函数。接下来进程返回到用户态中,执行相应的信号处理函数。信号处理函数执行完成后,还需要返回内核态,检查是否还有其它信号未处理。如果所有信号都处理完成,就会将内核栈恢复(从用户栈的备份拷贝回来),同时恢复指令寄存器(eip)将其指向中断前的运行位置,最后回到用户态继续执行进程。至此,一个完整的信号处理流程便结束了,如果同时有多个信号到达,上面的处理流程会在第2步和第3步骤间重复进行。(4) 常见信号量类型
系统的默认处理
Android 平台 Native 代码的崩溃捕获机制及实现
android native crash的处理机制相关推荐
- Android Native crash 处理案例分享
简介:Android Native crash 处理案例分享 1. 背景 目前 mPaas[1] Android使用Crash SDK对闪退进行的处理,CrashSDK 是 Android 平台上一款 ...
- Android native crash解析
当某个进程发生crash时会出现下面的错误日志,它可能出现在logcat日志或者/data/tombstones目录下的tombstone文件中 --------- beginning of cras ...
- 基于友盟+U-APM解决客户小姐姐Android Native Crash问题,小姐姐说我真棒,要把她闺蜜介绍给我
文章目录 一.遇到问题 二.Native日志分析 三.信号量(signal) 和 错误码(code)分析 四.PC指针addr2line定位 4.1 addr2line路径 4.2 so路径 4.3 ...
- Android Native Crash崩溃及错误原因分析二-实战解决
一. 简述 之前有一篇文章讲诉了Android实际开发过程中一些崩溃的原因,以及对崩溃类型做了详细的介绍,简单回顾一下:Crash类型:Java和Native,JavaCrash中明显会打印出Andr ...
- android 中断处理流程,Android P的native crash处理流程
一.概述 Android系统有监控程序异常退出的机制,这便是本文要讲述得debuggerd守护进程.当发生native crash或者主动调用debuggerd时,会输出进程相关的状态信息到文件或者控 ...
- android crash分析工具,Android Crash之Native Crash分析
前言 上一篇给大家介绍了Android Crash中的Java Crash分析,我们可以知道Java Crash一般会弹出提示框告诉我们程序崩溃了,通常使用Crash工具都能够捕获到:本篇博客来谈谈如 ...
- Android稳定性系列8 Native crash处理流程
一 Native Crash 从系统全局来说,Crash分为Framework/App Crash, Native Crash,以及Kernel Crash. 对于framework层或者app层的C ...
- 【Android 异步操作】Handler 机制 ( MessageQueue 消息队列的阻塞机制 | Java 层机制 | native 层阻塞机制 | native 层解除阻塞机制 )
文章目录 一.MessageQueue 的 Java 层机制 二.MessageQueue 的 native 层阻塞机制 三.MessageQueue 的 native 层解除阻塞机制 三.Messa ...
- Android Native程序crash的一些定位方法简介
Android Native程序crash的一些定位方法简介 经常,避免不了,我们的代码会崩溃.如果crash在native代码上,Android会和其他Linux一样,生成一份core dump,将 ...
最新文章
- Google的Java开发规范
- 我的erlang TCP服务器
- IOS 非常流畅的滑动tableView
- git通过gitosis来管理权限(三)
- 核密度估计python_非参数估计:核密度估计KDE
- express登录例子
- 【人脸识别】Center Loss详解
- iOS 评论APP撰写评论
- WinHex V14.6 SR-2 注册码
- AUTOCAD——坐标标注
- HR面试问题总结(HR面经)
- Python头文件写法
- 帮助海外游客规划从成田机场开始日本旅行的新网站上线
- NYOJ 1248 海岛争霸 河南省赛真题 Floyd 或者 并查集
- color-scheme 属性根据操作系统配色方案调整页面样式
- vanilla是什么意思
- WPT2F42-6/TR PNP双极功率晶体管WILLSEM
- 网络原理——网络协议
- 转自kuangbin的AC自动机(赛前最后一博)
- AB抛硬币,A先抛,谁先抛到正面谁赢,问两者赢的概率
热门文章
- Mysql与Sql server,Sum函数跟Count函数
- 11.编写一个Java程序,计算半径为3.0的圆周长和面积并输出结果。把圆周率π定义为常量,半径定义为变量,然后进行计算并输出结果。...
- 《那些年啊,那些事——一个程序员的奋斗史》——72
- sql语句的一些细节东西学起来还是很费劲的,希望以后注意下。算是经验吧
- kafka入门之broker--日志存储设计
- 如何学习Linux性能优化?
- 2017-2018-1 20155223 实验三 实时系统
- 非阻塞IO与异步IO
- Spring+ehcache缓存实例
- Oracle RAC在思科UCS上的应用