IDEA Debug 调试技巧(基础版)

发布时间 2024-01-10 15:02:05作者: 即溶咖啡粉

前言

Debug 是程序员的开发神器,使用好了可以帮助我们非常高效的工作、学习、排查问题等。毫不客气的说,是决定我们进阶到更高层级的一个重要技能。

正文

Debug 的常见使用场景

  • 需求代码测试:通过debug你才能知道你的代码究竟是怎么运行的,更容易发现问题
  • 问题排查:只要能进入到问题流程的debug,就没有排查不了的问题
  • 源码学习:源码通常很庞大,通过Debug 我们能更清晰的知道执行到哪个地方,执行时的各个变量数据

基础操作

  • Step Over:程序往下执行一行
  • Step Into:进入方法内.可以进入自定义方法或第三方库方法,JDK方法无法进入.
  • Force Step Into:强制进入方法内,可以进入所有方法内.
  • Step Out:退出方法,跟(Force)Step Into 配合使用
  • Resume Program:恢复运行程序,运行到下一个断点.如果没有下一个断点,则执行到程序结束.
    如下图:
    image

行断点(Line Breakpoints)

图标:红色圆形
功能:最常用的断点,在断点所在行进行暂停。
image

理论上只要有行断点和上面的基本操作,就可以完成大部分的 Debug 调试.但是很多场景下只使用这些功能,调试是很低效,接下来我们将依次介绍各种好用的调试技巧.

方法断点(Method Breakpoint)

图标:红色菱形
功能:在方法入口(entry)和出口(exit)都会自动暂停。在方法入口暂停可以让我们从头调试整个方法,而在方法出口处暂停可以让我们看到方法执行完毕时,方法内各个变量的数据情况。
有时候我们的一个接口会存在很多实现类,我们短时间内难以分析究竟是运行到了哪个实现类中,这个时候就可以使用方法断点,我们将断点打在接口方法上,运行到该方法时,会自动跳到实际执行的实现类,无需通过上下文环境去分析是哪个实现类。

缺点:复杂的项目中可能会降低debug的执行速度
image

字段断点(Field Watchpoints)

图标:红色眼睛
功能:在字段发生变更(默认)或者被访问(需要额外设置)时暂停。
如果我们想知道某个属性在什么时候被修改,从入口处开始调试太麻烦,我们可以直接在字段上打上字段断点,这样字段被修改的时候就会自动暂停。
而如果我们想在字段被访问时也暂停,则可以右键字段断点,将【Field access】勾选上即可。
image

//TODO