技术但求每天进步一点,不求一蹴而就。
作为一个开发,Debug是不可缺少的技能,如果一个开发Debug都不熟悉的话,那他肯定不是一个好的开发。下面我分享下我工作中常用的的那些Debug.
从上面的图可以看出断点是分类的
1 --行断点(每一行的断点)
2 --方法断点
3 --异常断点
他们之间的图标也是不一样的
什么是条件断点?意思是等到一定的条件的时候,才发触发这个Debug
实用场景 :
假如有一段代码for循环写的,你需要在第999次的时候debug的时候怎么处理(不知道有没有朋友面试的时候遇到过这个问题)
如何使用:
在你打断点的地方,就是图中的红点处,右键就出现这个画面,输入你的条件就OK
抓住关键方法或字段来追踪应用程序的运行轨迹
字段断点的触发条件是字段值被更改,方法断点是方法被调用
场景:适用于类似多线程下的复杂场景
使用:在字段那行、在方法声明的那行单击即可
如下图所示
下面可以看到在那个线程运行
Debu时打log
当我们发现一个 bug 的时候,只要有 debug 包,可直接 atatch debug,但是某些执行特别频繁的代码可能不太适合断点阻塞,需要添加日志。
常规去添加 Log,然后打包可能需要几分钟甚至更久,完了最后还得删除 debug log。
部分第三方jar,aar里面外面更是无法手动添加log代码了。
所以这个功能就用上了
将上图的Suspend这个钩去掉,会出现自定义选项
Evaluate and log 就可以在上面打印log
上面的debug 的log 就是现实i等于多少的时候程序奔溃了,运行下
在运行到 i =3的时候奔溃了,切记一点这个打印的log不是在咋们平常的logcat那里显示,而是在Debugger中的Console中显示
Evaluate Expression
计算表达式
作用:可以输出代码中表达式的值
使用:debug
状态下,右击选择Evaluate Expression
如下图所示
或者
使用:Alt+鼠标左键 在变量上面点击
什么是异常触发断点就是android运行的时候抛出的异常
实用场景 :
加入开发中遇到一些bug,没有一点头绪的时候,或者没有给出准确的位置的时候
如何使用:
图标1是点击的时候弹出该图框
图2 是java自带的一些异常
图3是自定义的异常抛出
点击DONE后就可以
1 ------是普通的运行
2 -------是Debug的运行
3 -------将运行状态切换到debug模式
在这里重点介绍下第三个按钮,因为用的多点
app处于运行的状态
点击的时候会弹出一个框叫你选择哪个进程处于debug模式
1.是下一步,单步执行
2 进入到方法中,必须是自定义的方法(不可以执行3)
3.可以进入到源码中(同时可执行2)
4.跳出正在执行的方法
从上到下依次为: