调试错误我个人倾向于分为三类:异常错误、编译错误、逻辑错误,这三种排查难度依次递增。
一、异常错误
主要是由于语法错误,布局资源缺失,id引用错误,以及最常见的空指针错误等引起的异常
举例说明:
报错误:android.content.res.Resources$NotFoundException: String resource ID
常见原因:
①将资源文件放入(v24)标签的文件夹里;
②布局id和控件id混淆
③没有定义
快速解决手段:根据logcat的error快速定位有问题的代码行,亦或者根据提示找到布局文件出现的问题的行数。
二、编译错误
主要在接入SDK或版本更新引入第三方库时容易出现编译错误,想对来说比较棘手。最容易忽视的是代码中某处引用了布局文件,但是却没有建立该布局,导致的编译错误。
快速解决办法:由于编译错误属于牵一发而动全身,往往一个很小的错误会提示一大堆错误,尤其是某某布局颜色资源等找不到啊,某某callbanck过时啊,这是解决办法是查看线程任务执行栈,在调试窗口的最右侧上方,点击“大象”gradle,这就是编译的任务栈,找到对应文件,里面会提示警告和错误,主要看错误,会提示具体到哪一行。
三、逻辑错误
在项目功能需求或任务的迭代开发中,最害怕的就是逻辑性错误,这时候千万要淡定,要冷静,首先根据异常推断最有可能出现问题的地方,将问题范围缩小,在不确定某参数值的情况下,通过日志断点的方式或debug的方式打印主要变量值和执行结果,也就是跟踪调试的方式,逐步排查在那个环节出了问题。