我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:财神爷图库 > 定位写出 >

关于Android中处理崩溃异常和分析日志的两种思路

归档日期:08-06       文本归类:定位写出      文章编辑:爱尚语录

  我们写程序的时候都希望能写出一个没有任何Bug的程序,期望在任何情况下都不会发生程序崩溃。不过理想是丰满的,现实是骨感的。没有一个程序员能保证自己写的程序绝对不会出现异常崩溃。特别是针对用户数达到几十万几百万的程序,当你用户数达到一定数量级后,就算你的程序出现个别异常崩溃情况也不用惊讶。此时及时收集用户的日志成了解决问题的关键。本文从两种方式分析查看日志的方式:

  1、系统基本信息 ,包括 内存,CPU ,进程队列 ,虚拟内存 , 垃圾回收等信息 。

  3、虚拟机信息 , 包括进程的,线程的跟踪信息,这是用来跟踪进程和线程具体点的好地方 。

  1,如果是ANR问题 , 则搜索“ANR”关键词 。 快速定位到关键事件信息 。

  2,如果是ForceClosed 和其它异常退出信息,则搜索Fatal 关键词, 快速定位到关键事件信息 。

  3,定位到关键事件信息后 , 如果信息不够明确的,再去搜索应用程序包的虚拟机信息 ,查看具体的进程和线程跟踪的日志,来定位到代码

  该方式适合能够及时拿到终端的情况下进行日志分析,那如果是用户的终端该如何及时分析bug日志呢,采用第二种方法如下

  看了网上大部分是采用日志收集的第三方jar包来完成的,还有一种是自定义一个自己的CrashHandler实现UncaughtExceptionHandler接口来捕获闪退信息然后上传到自己的服务器。这样的实现方式总觉得如果用户误删了闪退的日志文件那么就会导致无法及时上报闪退日志,也就无从分析隐藏的Bug了,于是采用另一种实现思路,即:在程序发生异常时提醒用户发生了什么样的异常,同时把本次捕获的Exception的字段写入到自己定义的log文件中,然后上报异常字段到自己的异常服务器上,从手机端或者后台都可以看到发生的异常堆栈。日志记录系统不借助与任何第三方jar包。说干就干,

  4、采用HTTP方式将实时catch的异常发送到异常服务器,并将异常的堆栈信息写入到SDcard中

  4、使用方式:在程序里面采用try catch捕获可能会出现的异常的代码块(界面给出提示,程序不闪退),另一种是没有进行try catch应用程序直接闪退

  这样友好的提示也给了用户,异常信息也及时上报了。但是该方式也有自己的缺点:大量的try catch会导致代码的效率不高。

  Androidndk开发,出现内存溢出或别的问题需要调试时,如何快速定位到源码位置,可以使用addr2line和ndk-stack两个工具。在程序内容主要分为一下几个部分:1.LibrarySymbo...博文来自:CodySnow的博客

  android开发者,当然不止Android还有其他的开发者,崩溃日志是很重要的反应问题的一个主要渠道,但是有时候androidapp在崩溃的时候不容易debug到,下面的方法主要是捕捉崩溃的日志写在...博文来自:Gordongao的博客

  AndroidANR和Crash问题小结--分析log在手机项目中,ANR和Crash都是比较常见的一类问题,解决起来非常耗费时间,但是又不能放弃,这些问题影响产品性能,这里记录一下我是如何分析ANR...博文来自:dzy_mails的专栏

  Linux下的*.so是系统的动态库,类似于win下面的*.dll,一般是由C/C++编译成的动态库,上层的Java程序通过JNI调用。动态库相对静态库的优点是,1.更加的节省资源;2.更方便的程序部...博文来自:qdb

  1、问题描述旋转屏测试5~6小时system_server发生abort,手机重启导致测试停止,android7.0平台多个项目都有此问题爆出。和测试同事了解旋转屏幕在settings界面进行操作概率...博文来自:pxy的博客

  一.简述之前有一篇文章讲诉了Android实际开发过程中一些崩溃的原因,以及对崩溃类型做了详细的介绍,简单回顾一下:Crash类型:Java和Native,JavaCrash中明显会打印出Androi...博文来自:为码消得人憔悴

  当APP主线程抛出异常时就会导致APPcrash,可能是由于view点击时抛出了异常等等,像这种异常我们更希望即使点击没反应也不要crash,用户顶多会认为是点了没反应,或者认为是本来就不可以点击,这...博文来自:陈英有

  安卓异常整体解决方案,从异常捕获、到异常日志写入、到异常上报等。。博文来自:XiNanHeiShao的专栏

  崩溃日志抓取感谢“liuhe688”大神的无私分享这里是博客地址:在Android里如果运行...博文来自:TheBadWaka的博客

  android异常开发者最头疼的地方,了解异常的处理机制对我们开发来说常有帮助。系统在app应用进程运行的时候设置一个异常处理类:···      /*setdefaulthandler;thisap...博文来自:一航jason

  源码获取请到github:已经做成sdk的形式,源码已公开,源码看不懂的请自行google。如果想定制适应自己a...博文来自:weixin_41508948的博客

  有一句话叫做常在河边走,哪有不湿鞋。我们这些研究和开发Android的工程师正应了这句话,相必大家在调试的时候经常会遇到这么个东西吧**********************************...博文来自:HellDevil的专栏

  最近接手一项目,之前很多人写过,所以代码比较乱.然后发现有一个页面,在其他机器上没问题,但在5.0的设备上进入该页面就非常容易出无响应(ANR),而且就算点等待也等不到能动的时候,真是卡死了.开始论坛

  androidANR、traces文件获取及实例分析前段时间项目开发中遇到anr的问题,时间紧急,一时间又难以定位,通过临时方法解决后,最近有时间对ANR的问题做一次份细的解决方案,本文中的解决方案是...博文来自:MR CUI的专栏

  有些手机是没有打开log开关的的。楼主是华为手机。亲测有用。如果不是华为可以自行百度这么打开Log开关。在拨号界面输入:*#*#2846579#*#* 进入测试菜单界面,然后ProjectMenu→后...博文来自:desire951的博客

  前言在项目中,我们常常会遇到Crash的现象,也就是程序崩溃的时候,这个时候最常看到的就是这个界面如果你的项目已经发布到市场上了,这样的崩溃对于开发人员是看不到的,所以我们得想方法将崩溃信息发送到服务...博文来自:点击置顶文章查看博客目录(全站式导航)

  app在运行过程中,为了后期的维护升级,记录日志是一个非常好的方法。为了读取到app运行时的日志,一般的作法是单独开一个线程,在app运行的启动线程,然后app退出时停掉线程。然而我们更好的方法是开启...博文来自:我的博客

  简单介绍:  Android开发过程中,因为各种原因导致app崩溃的现象层出不穷,异常奔溃带来的用户体验及其差劲,尤其当一个小小的功能页面的问题导致app整体奔溃带来的操作感受极差,防止app奔溃,虽...博文来自:shankezh的博客

  AndroidART运行时无缝替换Dalvik虚拟机的过程分析 Android4.4发布了一个ART运行时,准备用来替换掉之前一直使用的Dalvik虚拟机,希望籍此解决饱受诟病的性能问题。老罗不打算分...博文来自:kerson的专栏

  转自:大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序...博文来自:Kevin Meng

  1、概述  手机性能优化越来越重要,本文介绍了性能评估、分析和优化的方法。在接下来的章节中,将会分别介绍关于系统、开机启动时间、应用启动速度性能优化,同时也会介绍如何使用一些有用的工具去评测性能瓶颈。...博文来自:zhangbijun1230的专栏

  安卓APP一旦发生任何报错,就会停止运行,这是令许多开发者头疼的问题,很多情况下,一些隐性BUG在测试部门通过,而在上架之后发生小面积崩溃,这时候的报错因为没有日志,导致BUG无从查起。那么,只能通过...博文来自:不会前端的安卓不是好JAVA工程师

  今天来写点Android崩溃的东西,在我们写代码的过程中,代码写的再好再严谨,也总是会有一些程序的崩溃,对于release出去的APP,我们肯定是希望我们能够拿到崩溃的日志,便于bug的发现以及修复,...博文来自:openflight的专栏

  作者简介:贾志凯,Testin崩溃分析项目研发工程师,负责客户端SDK相关技术研发工作。5年移动互联网开发经验,曾任职于中科院、Symantec、Opera,对移动App的测试、分析有较深入的研究。A...博文来自:唐门教主

  开发中,app线上版本经常会出现这样那样的问题,那我们如何知道出现了什么问题呢?并且能快速定位到错误并有效解决呢?这里就涉及到错误日志或叫崩溃日志了。一般情况下,我们都会继承友盟等第三方的错误日志,来...博文来自:lzq520210的博客

  1.在Android中有的未知的Bug可能在测试中没有及时发现,导致用户在使用时出现程序奔溃,出现用户体验不好,而我们又不清楚的情况。android提供了Thread.UncaughtExceptio...博文来自:huangma11的博客

  卷积神经网络是深度学习的基础,但是学习CNN却不是那么简单,虽然网络上关于CNN的相关代码很多,比较经典的是tiny_cnn(C++)、DeepLearnToolbox(Matlab)等等,但通过C语...博文来自:tostq的专栏

  最近在写Android程序崩溃异常处理,完成之后,稍加封装与大家分享。我的思路是这样的,在程序崩溃之后,将异常信息保存到一个日志文件中,然后对该文件进行处理,比如发送到邮箱,或发送到服务器。所以,第一...博文来自:貌似掉线的博客

本文链接:http://mymediaworld.net/dingweixiechu/817.html