IDEA - Debug常用技巧

4/4/2021 IDEATool

摘要

IntelliJ IDEA 2019.2.3

# 一:界面

IDEA中提供一系列Step功能按钮用于单步调试,可以在Run菜单栏找到全部Step功能

相关快捷键

Debug模式下的基本界面:

基本界面

  1. 方法调用栈:这里显示了该线程调试所经过的所有方法,勾选右上角的漏斗[Hide Frames from Libraries]按钮,就不会显示其他类库的方法了,否则这里会有一大堆的方法。
  2. Variables:在变量区可以查看当前断点所在的当前方法内的变量
  3. Watches:查看变量,可以将Variables区中的变量拖到Watches中查看
  4. Rerun 'xxxx'(Ctrl + F5):重启服务
  5. Resume Program(F9):直接跑到下一个断点停下,没有就直接跑完调试
  6. Pause Program:暂停程序
  7. Stop 'xxxx'(Ctrl + F2):停止项目或程序
  8. View BreakPoints(Ctrl + Shift + F8):查看所有的断点设置情况
  9. Mute Breakpoints:取消所有断点,让所有断点无效
  10. Show Execution Point(Alt + F10):跳转到当前代码所执行的地方。如果在看代码的时候点到其他地方,一点这个按钮,就到了程序执行到当前哪行的代码地方
  11. Step Over(F8):一行行执行,遇到方法不跳进去
  12. Step Into(F7):跳转到详情,如果下一行调试代码是可执行方法,就可以F7进入,查看这个方法的运行详细情况。(仅会进入自己写方法)
  13. Force Step Into(Alt + Shift + F7):功能同上(可以进入所有方法)
  14. Step Out(Shift + F8):从详情跳出去
  15. Drop Frame:有时候当我们步入方法体之后,还想回退到方法体外,点这个按钮后,断点重新回到方法体外,再继续还是可以再次进入到方法内
  16. Run to Cursor(Alt + F9):跳转到下一个断点
  17. Evaluate Expression(Alt + F8):点开这个,可以计算你想要看到的代码段的值
  18. Restore Default Layout:重置布局

一般访问请求到达第一个断点后,会自动激活Debug窗口。如果没有自动激活,可以进行如下设置。

自动激活Debug窗口

调试过程中,使用频率最好的可能就是Setp Over。可以单步调试代码,但是当碰到方法执行时,不会进入方法内,直接调用了方法,然后到下一行。

如果需要进入方法内,需要使用Setp Into。Setp Into可以进入调用的方法内,不过默认情况下并不会进入java.*等类的方法中。如果需要进入,可以在Setting-Stepping中设置,排除即可。 默认配置

# 二:说明

# Step Over(F8)

单步执行,执行当前行代码,如果当前代码是一个方法调用,则直接运行完这个方法,得到方法的返回值,而不是进入到这个方法。

如果跳过的方法中有断点,调试器将会在这些端点处停止。

Step Over

# Force Step Over(Alt + Shift + F8)

即使当前调试的行中包含方法调用,且该方法中有断点,则方法内的断点也会被忽略

Force Step Over

# Step Into(F7)

单步执行,执行当前行代码,若当前行代码是一个方法调用,则进入该方法,然后继续单步执行。

Step Into

# Force Step Into(Alt + Shift + F7):

单步执行,与Step Into类似。二者唯一的区别是:Step Into不会进入到JDK实现的方法中。Force Step Into会进入到任何方法中单步执行

Force Step Into

# Smart Step Into(Shift + F7):

只能进入Step Into,当遇到一行语句调用太多方法时,如果想看某个方法,这时候可以使用智能进入,程序会标记能进入的方法,鼠标选择即可

Smart Step Into

# Step Out(Shift + F8):

跳出执行,当我们在一个方法中调试时,如果觉得该方法在后面不会有任何问题或者不需要再调试该方法时,可以使用Step Out直接跳出该方法,返回到方法调用处。

也就是说,可以在方法中使用Step Out直接跳出该方法,继续回到调用方法的地方进行调试。 Step Out

# Step Out of Code Bock:

跳出当前执行的代码块。这里可以跳过剩余迭代且还没离开的代码块,例如whilefor

Step Out of Code Bock

# Run to Cursor(Alt + F9):

运行到光标处,可以使调试的程序从当前位置直接运行到光标所在的位置,然后等待下一步命令。

若中途有断点,则会跳到断点处

Run to Cursor

# Force Run to Cursor(Ctrl + Alt + F9):

运行到光标处,可以使调试的程序从当前位置直接运行到光标所在的位置,可以忽略中途的断点。

# Drop Frame:

销毁当前方法的栈帧,回到上一级调用方法时的状态,等待下一步操作命令。注意:这里的返回是指销毁性返回,所有的变量的值和程序当前的环境都会被还原到调用该方法之前的状态。

# Force Return:

# Throw Exception:

# 三:变量查看

# 四:断点类型

# 临时断点

# 条件断点

# 多线程断点

# 五:调试修改

计算表达式

# 六:回退断点

# 七:中断调试

# 八:远程调试

# 九:参考链接

最后更新: 9/23/2023, 3:55:03 PM