crashdumpandroid_Android Crash之Java Crash分析

前言

小巫最近由于工作原因面临技术转型,从一个App开发者转变为SDK开发者,这两者的区别是非常明显的,从用户角度来讲,app开发主要面向普通的用户需求,然而SDK开发面向的却是开发人员;从技术角度来讲,app开发更多的只是UI层面、基于数据流的技术实现,而SDK开发可能就要涉及更多复杂的需求、更多底层相关的技术实现。前面我在公众号分享了一篇文章:一个好的SDK或好的开放平台应该为开发者提供什么?,大家有兴趣可以看看。本系列博文主要是想跟大家分享一下在Android平台中如何进行Crash分析并解决问题并告诉大家如何通过bugly进行崩溃捕获快速定位问题。

什么是Crash?

想必这个只要从事过编程工作的同学一定知道是什么?这里我们进行一些概念上的普及:

Crash就是由于代码异常而导致App非正常退出现象,也就是我们常说的『崩溃』

Android中有哪些类型Crash

通常情况下会有以下两种类型Crash:

Java Crash

Native Crash

本篇先探讨Java Crash,Native Crash我们会在下一篇重点讨论。

Java Crash在Android上的特点

这类错误一般是由Java层代码触发的

一般情况下程序出错时会弹出提示框,JVM虚拟机退出

一般的Crash工具都能够捕获,系统也提供了API

举个栗子

8f5fc87c23c5

制造一个空指针异常

我们可以看到,button是没有被实例化的,我们调用它的方法就会让程序崩溃,如下图所示:

8f5fc87c23c5

崩溃提醒

通过Crash堆栈信息定位问题

上面就是一个很简单的Crash啦,相信很多同学在开发过程中一定遇到过这种情况,万恶的空指针啊,啊,啊。我们来看看logcat给我们输出的堆栈信息:

8f5fc87c23c5

定位问题

通过logcat查看Error级别日志,就可以完整看到打印出来的堆栈信息,我们找到『Caused by』信息:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at com.devilwwj.androidcrashdemo.MainActivity.onCreate(MainAc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值