AndroidStudio 你不知道的调试技巧
常见的单行断点调试这里不用多说,直接上那么你所不知道而且又特别有价值的调试技巧。
1.异常断点
在我们日常开发中或者线上出现crash都是特别常见的事情,我们都知道出现了Exception,可是每次出现crash都要去查看日志具体出现什么异常,异常出现在哪一行,这是非常头疼的问题,因为打印出现的关键堆栈信心早已被一大堆的系统日志和App日志所淹没了。我们希望的是,只要程序一出现异常,就能够断下来。AndroidStudio提供了异常断点,可以在特定异常发生的那一刻,直接让整个程序停下来,断在异常的那一行代码。
操作流程是:进入Run->View BreakPoint或者用快捷键打开View BreakPoint,
在Java Exception BreakPoint 那一栏钩上Any Exception,Done。如图:
然后进入debug模式,一旦你的代码出现异常,立马保留现场,停在出现异常的代码行!!
当然你也可以指定特定的异常情况,例如NullPointerException,IllegalArgumentException等。
操作流程是:在View BreakPoint,点击左上角的,选择Java Exception BreakPoint,弹出输入框后输入你指定的异常。如图:
2.条件断点
有时我们需要在一个列表的循环中断点,但是我们感兴趣的仅仅其中某一个元素,难道我们要人肉的去从0元素调试到我们感兴趣的那个元素吗,这是不需要的,因为有了条件断点。
操作流程是:在循环里面的断点出,两个手指双击断点,出现一个小窗口,写上条件即可。
进入debug模式,直接跳到输入条件的地方。如图:
3.日志断点
我们在开发中时候经常会关键代码出打印日志,如果在调试期间某个关键点发现需要打印日志,这时重新写上打印日志代码,重新编译,大项目等待时间一般都要几分钟或者十几分钟,非常痛苦。这时我们可以用日志断点,也可以打印出日志。
操作流程:首先在输出的地方加上断点,两个手指双击断点,点击more,然后把suspend属性设置为false,然后在输入框里填上我们需要输出的日志信息,如图:
这样在debug模式下,每次代码执行到这个断点的位置,这个断点并不会停下来,而是输出我们输入的日志信息,然后继续执行。日志在控制台输出如图:
4.域断点
有时我们遇到一些非常奇怪的bug,成员变量无缘无故不知道被哪一行代码修改了,特别时在多线程的情况下,更是难以分析情况,这是我们可以用域断点,它的作用是在某一个域被访问或者修改的时候让程序断下来。非常有助于我们分析这类问题。
操作流程:在对应的域上加上断点即可。