像我这种习惯了靠打印关键节点信息进行调试的顽固派来讲有时候是不愿意用Debug的,后面发现确实还是蛮高的实用性,所以适当接受了;
一、Attach Debuger
我们调试程序的时候点了Debug app 按钮,但是 Run 之后发现效果不对,想调试一下,然后又点 Debug 按钮重新编译了一遍,非常耗时间,这时候就要用到 Attach debug 了。
我们adb连接上调试设备后,先点击Debug ap:
选择Attach Debuger 就可以开始调试了;
二、条件断点
选择想进行调试的关键节点,在最左侧点击,可以看到
里面的 conditions 是用来触发条件断点的条件。
例如:一个 for 循环,你想让他跑到第四遍的时候停下来进入断点开始调试,就输入i==4
然后done,他就会在满足条件 i==4
的时候停下进入断点调试。
接下来可以选择按照代码逻辑进行debug
三、日志断点
接条件断点图片可以看到左下角有 More ,在里面可以有更多的属性选择。比如说我们想在这断点处打日志,但是程序已经跑起来了,我们又不需要停下来。那么这个时候可以接上两步学习的内容融合一下。然后在你想输出日志的地方打上断点,右键,点击左下角的 More,打开 More 之后我们可以看到展开了更多的属性,我们选上 Log Message to console 和 Evaluate and log,输入日志信息。然后他就会触发断点的时候打印日志到 logcat 上了。但是我们只想要打印日志,不想进入 debug 模式怎么办?那么我们只要把 Suspend 取消掉,他就不会暂停下来进入 debug 模式,而是会继续跑下去。这样就可以继续跑程序同时随时输出你想要的日志信息了。
例如:
四、setValue
setValue 这是在进入 debug 模式后,对某些参数当前值直接进行更改生效的方法。如图下图:
四、Evaluate
Evaluate 就是下图中的上方箭头所指的小窗。Evaluate 和 debug 模式下的 + 号功能上差不多,只不过他是弹窗式弹出来,而且是一次性的。下面的 + 号更多是类似一种 watcher 的作用。
在监测某些返回值或者某些执行结果的变化的时候我会用 + 号更多。在做一些主动性尝试的时候则是用 Evaluate 更多。例如,上面我 setValue 更改了某些数值,但是我此时有好几个公式想知道执行结果,不知道哪个公式才是正确的。只需要点击小窗,就可以在上面执行语句。观察结果。
另外:
- 快捷键 ctrl+H 可以展开继承关系。
- ctrl+左键,点击调用的方法跳转到方法内部,点击方法名跳转到被调用的地方(类似于 find usages)
点击接口左边的图标可以查看哪里实现了该接口。
基础调试能力基本掌握这几种就可以开始基础调试了;