Android Crash日志收集

Android 获取奔溃crash的日志(adb logcat或者dropbox) 记录下adb logcat 抓取奔溃日志,dropbox 获取系统记录的奔溃,判断是系统进程还是app进程导致奔溃 阅读详情

这里主要针对手机发货后,到达用户手上之后,如何搜集故障现场信息。其实开发APP时,已经有一些第三方的Crash SDK可以选择,比如腾讯的Bugly、百度的MTJ、友盟SDK等。这里主要是介绍如何实现这个功能的内部原理。

要实现一个Crash SDK包括三个方面:Crash捕获、Crash堆栈信息的获取、Crash日志的上报。

Java层Crash捕获机制

1)基本原理

Android应用程序是基于Java语言开发的,异常处理也是沿用Java语言的机制。在java中异常分为两类:CheckedException和UnCheckedException。CheckedException又称为编译时异常,它是编译阶段必须处理的,否则编译失败(这部分异常是类的静态定义中明确写明的),一般使用try..catch..捕获并进行处理。UnCheckedException又称为运行时异常,这类异常只有在程序运行时满足条件才会触发。当然,也可以使用try..catch...来捕获这类异常,但事实是我们往往不知道在什么地方应该添加对这类异常的捕获。

好在java提供了一个全局异常捕获处理器,Android应用在java层捕获Crash依赖的就是Thread.UncaughtExceptionHandler处理器接口,通常情况下,我们只需要实现这个接口,并重写其中的uncaughtException方法,在该方法中可以读取Crash的堆栈信息(即Throwable类的printStackTrace方法)。一般都是在Application类的onCreate方法中调用Thread.setDefaultUncaughtExceptionHandler方法来替换应用默认的异常处理器。

2)其他信息

除了堆栈信息之外,我们可以调用Thread的一些方法获取线程信息、调用SharedPreference获取一些开关设置、系统设置、自定义存储的一些log、Meminfo信息等。

Native层的Crash捕获机制

Native层发生异常后并没有java这样明确的机制,而是通过进程间信号处理机制来完成。可以可以监控进程的SIGFPE、SIGSEGV、SIGABRT、SIGILL、SIGBUG、SIGIPE、SIGSTKFLT等信号,实现自定义的信号处理函数。在这里可以向java发送消息,启动java的Logcat抓取工作(因为Native的异常一般在Logcat中会有所反应)。

还有一个Google Breakpad跨平台的崩溃转储和分析工具可以使用,通过集成它提供的函数库,在应用发生崩溃时,可以将相关堆栈信息写入一个minidump格式文件中,开发人员可以通过addr2line等工具将dump文件中的函数地址转换成对应的代码行数,从而知道问题发生的具体位置。

Android NDK Crash信息收集捕获和日志异常定位分析(addr2line) Android NDK 闪退日志收集与分析我们在开发过程中,Android JNI层Crash问题或者我们引用的第三方.so库文件报错,都是一个比较头疼的问题。相对Java层来说,由于c/c++造成的crash没有输出如同Java的Exception Strace堆栈信息,所以定位问题也是个比较艰难的事情。Google Breakpad是一套完整的工具集,从Crash的捕获到Crash的dump,都提供了相对应的工具。 阅读详情

相关推荐

STK与Matlab连接报错?手把手教你解决mexConnect函数执行问题(附完整避坑指南)

本文针对STK与Matlab连接时常见的“mexConnect函数执行”报错,提供了完整的诊断与解决方案。文章深入剖析了错误根源在于路径冲突或文件损坏,并手把手指导用户通过定位STK连接器文件、正确配置Matlab路径(包括使用addpath命令)以及执行初始化测试三步走策略,彻底解决问题。同时附上版本兼容性检查、安装避坑指南及构建稳健工作流的建议,帮助用户建立可靠的STK-Matlab联合仿真环境。

yolo5detector的博客 472

android app 崩溃异常捕获,通过异常堆栈信息定位问题

转载 https://blog.youkuaiyun.com/lvxiaobo1994/article/details/83056274 android 捕获app异常崩溃堆栈信息,只需要2步:继承创建一个自定义的处理UncaughtExceptionHandler 类,然后在应用程序的启动类onCreate 方法中 初始化启动 即可。若要写入sd卡,需要读写权限 一 创建继承 Thread.UncaughtExceptionHandler 的自定义类,捕获app UncaughtException 异常 import

a704397849的博客 1971

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计

PHP+MYSQL宠物主题动态网页设计源码+数据库,大学生期末大作业,PHP课程设计提示:本文采用PHP对数据库进行操作:本文就介绍了PHP实现对MySQL数据库的增删改查操作基础内容。

900

分析Crash 日志一

分析Crash 日志 1、Header Incident Identifier: B6FD1E8E-B39F-430B-ADDE-FC3A45ED368C CrashReporter Key: f04e68ec62d3c66057628c9ba9839e30d55937dc Hardware Model: iPad6,8 Process: TheElements [303] Path: /priv...

onebutterfly 8567

网络系统实现技术之IPX与SPX

IPX/SPXNovell NetWare网络Novell公司为适应网络发展,将主机网络转换为PC网络,开发了Novell NetWare网络系统。该系统中基于客户机/服务器模式。以普通PC机做为客户机,以性能强大的服务器做为服务器,为客户机提供文件服务、数据库服务及其他服务。与前面的SNA模型一样,Novell NetWare也早于OSI模型,所以不能与OSI模型严格对应,但也有很明

成片的大树 9164

保姆级教程:用DaVinci Configurator & Developer从零搭建AUTOSAR OS(TC2xx三核实战)

本文提供了一份详细的AUTOSAR OS配置指南,使用DaVinci Configurator和Developer工具从零开始搭建Infineon TC2xx三核系统。涵盖多核配置协同逻辑、版本兼容性陷阱及验证错误的解决方案,帮助开发者在3小时内构建可运行的多核OS框架。

weixin_33940469的博客 315

分析crash日志

分析crash日志

scsery的博客 952

【提示学习代码】CoOp代码详读

CoOp是对CLIP的改进工作,主要是对prompt进行学习从而不用来手动设置prompt。自定义CLIP模型:上述两个模块结合而成的CLIP。文本编码器,接收文本的输入,并输出相应的编码表示。将图像和文本进行编码并计算它们之间的相似性。permute后变成了(4,2,3)Prompt学习器,用于学习生成提示。

weixin_51293984的博客 5816

降本增效工具系列(二):IOS 系统 Crash 日志分析实战

当应用程序在IOS设备上崩溃(例如,闪退)时,一份“Crash崩溃报告”将在该设备上创建并存储起来。崩溃报告描述了应用程序是在何种条件下崩溃的,大部分情况下包含一份当前正在运行线程的完整堆栈跟踪。如果设备就在身边,可以连接设备,打开,在左侧面板中选择(可以选择具体设备的或者Library下所有设备的),然后根据时间排序查看设备上的crash日志。这是开发、测试阶段最经常采用的方式。如果应用程序已经提交到App Store发布,用户已经安装使用了,那么开发者可以 通过)获取用户的crash日志。

IT全栈 华强工作室 4942

NVIDIA Jetson之交叉编译工具

参考:http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=33630 用TX2做红外热成像仪的识别,厂家不提供源码,只能提供对应版本的SDK,但是需要我们自己提供交叉编译器 由于之前没有做过交叉编译相关工作,对编译工具不太了解,因此查找相关资料学习下 交叉编译知识 一般来说,针对嵌入式平台的开发有两种编译模式:原生编译和交叉编译。原生编...

ZONGXP的博客 8385

rk3576 适配摄像头 (mipi 双摄)

RK3576 自带两个 4-Lane DPHY 和一个 DCPHY CSI 接口,可以连接 4lane 的双摄像头,最直接的方式就是充分利用其两个 D-PHY 接口。次选方案是 DCPHY + DPHY方案,更次之方案是单DPHY,设置成分离模式,连接两颗摄像头。

weixin_35723192的博客 391

android crash没有日志_一文揭秘那些牛逼的安卓收集crash如何实现

大家都知道,我们在测试过程当中,都会遇到crash,那么我们需要收集这些日志,然后给开发处理,正常的情况下呢,我们都会去抓log来实现的。我们常用的就是.adblogcat>crash.txt 使用adb命令倒出来我们的崩溃日志。我们也经常看到各种的crash的收集的系统,今天呢,笔者带领大家去实现一个简易版本的crash收集,可以集成到我们的实际的项目中...

weixin_39605840的博客 339

代码复现3—VLN-CE

运行训练完后在 data文件下会自动生成一个“checkpoints”文件,文件下包含任务文件“seq2seq”,该文件下会包括训练出来的权重和评估结果。数据集下载完后路径提取:data/scene_datasets/mp3d/{scene}/{scene}.glb。注意这里下载的数据集并不是所有的matterport3d,只需要一部分,包含90个场景,大小压缩后约16G。在“eval”时,会在data文件下生成videos文件,里面存放的是可视化的轨迹视频。

qq_44100524的博客 3202

收集安卓crash日志

android开发之应用Crash自动抓取Log_自动保存崩溃日志到本地 标签: androidandroid开发异常处理 2015-05-09 16:58 18293人阅读 评论(11) 收藏 举报 本文章已收录于: 分类: Android进阶(21) 作者同类文章X 应用发生crash之后

u013134722的博客 393

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android中anr采集,Android CRASH ANR 日志收集

Android CRASH ANR 日志收集需求:如图image-20180919183318650.png收集实现方式image-20180919173220331.png通过现成的bugly收集 在bugly上报crash 或anr之前先将错误信息写入本地磁盘/*** Crash处理.** @param crashType 错误类型:CRASHTYPE_JAVA,CRASHTYPE_NATIV...

weixin_34458671的博客 758

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Android】【源码分析】应用内 Crash 异常日志收集(UncaughtExceptionHandler)

应用内部收集 Crash 日志主要是基于 Thread.java 的 UncaughtExceptionHandler。据了解, 第三方异常日志统计主要也是基于该模块。 1. 基本原理 /** * Dispatch an uncaught exception to the handler. This method is * intended to be called only by the JVM. */ private void dispatchUncaughtExceptio...

a953210725的专栏 1823

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android Crash日志收集原理与实践

 通常不需要我们自己研发Crash SDK的任务,市场上已经有很多第三方的Crash SDK可供选择,如腾讯的Bugly\百度的MTJ、友盟SDK等。实现一个Crash SDK包括以下三个方面的工作:* Crash 的捕获* Crash 堆栈信息的捕获* Crash 日志的上报    Android 底层是基于Linux操作系统构建的,上层是基于Java语言的实现的,上层与底层的通信基于JNI。在...

weixin_42009516的博客 1381

android崩溃无日志,Android 收集Crash日志----UncaughtExceptionHandler

Android应用不可避免地会发生crash,也称之为崩溃,无论你的程序写得多么完美,总是无法完全避免crash的发生,可能是由于Android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉正在执行的程序,现象就是闪退或者提示用户程序已停止运行,这对用户来说是很不友好的,也是开发者所不愿意看到的。更糟糕的是,当用户发生了crash,开发者却...

weixin_39713805的博客 619

安卓应用crash日志的获取

安卓系统的应用免不了crash,或者是应用本身的问题,或者安卓设备的问题,或者安卓系统本身也有bug,那么,把crash的记录在日志,并通过日志回传或者本地获取crash并进行分析,就能更方便的,更有效的分析问题,解决问题 笔者所知的方法大概有三种: 第一种:市面上现有的加固服务方大多提供这个服务,只要把应用上传,平台会自动收集crash日志用于分析,不过前提是要有这些平台的账号(比如友盟)

dayuzhuangzhi的博客 4670

Android 收集崩溃(crash)日志并输出到本地

通过设置自己的异常处理器来替换默认的处理器,以实现自定义的异常处理逻辑

简单记录工作和学习 2324

Android 日志收集原理与实践

导读 Android应用在开发和测试的过程中,如果出现crash,我们一般通过logcat日志信息就可以定位到crash的原因,从而排除BUG。但是如果我们的应用已经发布到了市场上,到时候再发生crash的话,我们想拿到crash的日志信息就很麻烦了,因为我们不可能去跟每一个出现crash的用户来索要crash日志。那怎么办呢?这个时候就需要我们的日志信息收集系统出手了。 最后我会把代...

farley的成长之路 3684

app运行中的crash崩溃异常日志收集

https://bugout2.testin.cn/ 在Android开发中,一个app在推广后。我们怎么才能知道这个app运行的如何,有没有出现崩溃等问题。这也就是app数据监控的一部分。下面的这个就是介绍关于crash日志的收集。这个就是核心代码: import java.io.File; import java.io.FileOutputStream; import java.io.Pr...

weixin_41508948的博客 1376

Android 收集Crash日志----UncaughtExceptionHandler

Android应用不可避免地会发生crash,也称之为崩溃,无论你的程序写得多么完美,总是无法完全避免crash的发生,可能是由于Android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉正在执行的程序,现象就是闪退或者提示用户程序已停止运行,这对用户来说是很不友好的,也是开发者所不愿意看到的。更糟糕的是,当用户发生了crash,开发者却...

flowerff的博客 407
上一篇: ANR产生的原因
下一篇: 内存泄漏检测和静态代码分析等工具简单列举
makeyourprogress
博客等级 码龄11年 26粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值