AS的Debug的一些常用的功能

前言:

技术但求每天进步一点,不求一蹴而就。

作为一个开发,Debug是不可缺少的技能,如果一个开发Debug都不熟悉的话,那他肯定不是一个好的开发。下面我分享下我工作中常用的的那些Debug.

从上面的图可以看出断点是分类的

1 --行断点(每一行的断点)

2 --方法断点

3 --异常断点

他们之间的图标也是不一样的

1.行断点

1.条件断点

什么是条件断点?意思是等到一定的条件的时候,才发触发这个Debug

实用场景 :

假如有一段代码for循环写的,你需要在第999次的时候debug的时候怎么处理(不知道有没有朋友面试的时候遇到过这个问题)

如何使用:

在你打断点的地方,就是图中的红点处,右键就出现这个画面,输入你的条件就OK

2 字段和方法断点

抓住关键方法或字段来追踪应用程序的运行轨迹
字段断点的触发条件是字段值被更改,方法断点是方法被调用

场景:适用于类似多线程下的复杂场景

使用:在字段那行、在方法声明的那行单击即可

如下图所示

下面可以看到在那个线程运行

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+鼠标左键 在变量上面点击

2.异常触发的断点

什么是异常触发断点就是android运行的时候抛出的异常

实用场景 :

加入开发中遇到一些bug,没有一点头绪的时候,或者没有给出准确的位置的时候

如何使用:

图标1是点击的时候弹出该图框

图2 是java自带的一些异常

图3是自定义的异常抛出

点击DONE后就可以

下面介绍一些图标

1 ------是普通的运行

2 -------是Debug的运行

3 -------将运行状态切换到debug模式

在这里重点介绍下第三个按钮,因为用的多点

app处于运行的状态

点击的时候会弹出一个框叫你选择哪个进程处于debug模式

1.是下一步,单步执行

2 进入到方法中,必须是自定义的方法(不可以执行3)

3.可以进入到源码中(同时可执行2)

4.跳出正在执行的方法

从上到下依次为:

  1. 运行至下一断点,(从暂停)恢复程序
  2. 暂停程序
  3. 关闭调试
  4. 查看断点
  5. 隐藏断点(breatpoints)
  6. 查看线程堆栈