前言
Debug 是程序员的开发神器,使用好了可以帮助我们非常高效的工作、学习、排查问题等。毫不客气的说,是决定我们进阶到更高层级的一个重要技能。
正文
Debug 的常见使用场景
- 需求代码测试:通过debug你才能知道你的代码究竟是怎么运行的,更容易发现问题
- 问题排查:只要能进入到问题流程的debug,就没有排查不了的问题
- 源码学习:源码通常很庞大,通过Debug 我们能更清晰的知道执行到哪个地方,执行时的各个变量数据
基础操作
- Step Over:程序往下执行一行
- Step Into:进入方法内.可以进入自定义方法或第三方库方法,JDK方法无法进入.
- Force Step Into:强制进入方法内,可以进入所有方法内.
- Step Out:退出方法,跟(Force)Step Into 配合使用
- Resume Program:恢复运行程序,运行到下一个断点.如果没有下一个断点,则执行到程序结束.
如下图:
行断点(Line Breakpoints)
图标:红色圆形
功能:最常用的断点,在断点所在行进行暂停。
理论上只要有行断点和上面的基本操作,就可以完成大部分的 Debug 调试.但是很多场景下只使用这些功能,调试是很低效,接下来我们将依次介绍各种好用的调试技巧.
方法断点(Method Breakpoint)
图标:红色菱形
功能:在方法入口(entry)和出口(exit)都会自动暂停。在方法入口暂停可以让我们从头调试整个方法,而在方法出口处暂停可以让我们看到方法执行完毕时,方法内各个变量的数据情况。
有时候我们的一个接口会存在很多实现类,我们短时间内难以分析究竟是运行到了哪个实现类中,这个时候就可以使用方法断点,我们将断点打在接口方法上,运行到该方法时,会自动跳到实际执行的实现类,无需通过上下文环境去分析是哪个实现类。
缺点:复杂的项目中可能会降低debug的执行速度
字段断点(Field Watchpoints)
图标:红色眼睛
功能:在字段发生变更(默认)或者被访问(需要额外设置)时暂停。
如果我们想知道某个属性在什么时候被修改,从入口处开始调试太麻烦,我们可以直接在字段上打上字段断点,这样字段被修改的时候就会自动暂停。
而如果我们想在字段被访问时也暂停,则可以右键字段断点,将【Field access】勾选上即可。
//TODO