IDEA使用Debug调试项目技巧总结

1 Debug简介

  • 开发中,可以使用Debug来追踪代码的运行流程;
  • 如果程序运行中出现异常,启用Debug模式可以定位异常发生的位置、以及在运行过程中参数的变化;
  • 也可以启用Debug模式来追踪代码的运行流程去学习第三方框架的源码;

首先看下IDEA中Debug模式下的界面,如下是在IDEA中启动Debug模式,进入断点后的界面:

  1. 以Debug模式启动服务;
  2. 断点:在左边行号栏单击左键;
  3. Debug窗口:访问请求到达第一个断点后,会自动激活Debug窗口;
  4. 调试按钮:调试的主要功能就对应着这几个按钮,菜单栏Run里可以找到同样的对应的功能;
  5. 服务按钮:可以在这里关闭/启动服务,设置断点等;
  6. 方法调用栈:这里显示了该线程调试所经过的所有方法,勾选右上角的[Show All Frames]按钮,就不会显示其它类库的方法了,否则这里会有一大堆的方法;
  7. Variables:在变量区可以查看当前断点之前的当前方法内的变量;
  8. Watches:可以做更加复杂的东西,比如可以观察将变量做一些处理后的结果;
    在这里插入图片描述

2 基本用法

1 第一组按钮
在这里插入图片描述
从左到右依次解释:

  1. Show Execution Point:如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行;
  2. Step Over:步过,一行一行地往下走,如果这一行上有方法不会进入方法;
  3. Step Into:步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法;
  4. Force Step Into:强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法;
  5. Step Out:步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值;
  6. Drop Frame:回退断点(新版IDEA的Dubug按钮组中没有Drop Frame 按钮,我们可以用 Reset Frame 来代替;
    在这里插入图片描述
  7. Run to Cursor:运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点;
  8. Evaluate Expression:计算表达式的值。这个表达式不仅可以是一般变量或参数,也可以是方法,当一行代码中调用了几个方法时,就可以通过这种方式查看某个方法的返回值;另外,在表达式的框里,可以改变变量的值,方便地调试各种值下的情况;

2 第二组按钮

在这里插入图片描述
从上到下依次解释:

  1. Rerun ‘xxxx’:重新运行程序,会关闭服务后重新启动程序;
  2. Modify Run Configuration:修改运行配置;
  3. Resume Program (F9):恢复程序。如果下面有代码,则跳转到下面的断点;如果下面代码没有断点,那么执行完全部代码;
  4. Pause Program:暂停程序;
  5. Stop ‘xxx’ (Ctrl + F2):关闭程序;
  6. View Breakpoints (Ctrl + Shift + F8):查看所有断点;
  7. Mute Breakpoints:哑的断点,选择这个后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序。再次点击,断点变为红色,有效。如果只想使某一个断点失效,可以在断点上右键取消Enabled;

3 智能步入

实现步入同一行的多个方法中某一个方法,在Run-Debugging Actions下可以找到,Smart Step Into(Shift + F7)。
在这里插入图片描述
在这里插入图片描述

4 断点条件设置

通过设置断点条件,在满足条件时才停在断点处,否则直接运行。

应用意义:遍历一个比较大的集合,在循环内设置了一个断点,如果一次次点击查看变量会很累而且没有意义。

方法:在断点上右键设置当前断点的条件,例如下图设置i==5时断点才生效。

在这里插入图片描述

5 手动修改程序中变量的值

在Debug模式中,可以手动修改程序中变量的值,如下所示:i的值应该是0,手动修改为10,继续执行代码,可以看到控制台输出的就是 10,并且立刻跳出循环。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10

6 计算表达式

计算表达式有两个作用:

  1. 查看表达式(包括方法)的值;
  2. 设置表达式的值(相当于“手动修改程序中变量的值”);

在这里插入图片描述
在这里插入图片描述

7 异常断点

在Debug之前,设置异常断点,Debug时如果出现设置包含的异常,断点就会停留在异常出现的地方。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8 字段断点(监听这个字段)

1 在字段上打断点:
在这里插入图片描述
2 测试:
在这里插入图片描述
3 停在了构造方法上:
在这里插入图片描述

9 Variables和Watches

“Variables”是用来观察变量的,而“Watches”可以做更加复杂的东西,比如可以观察将变量做一些处理后的结果.

在这里插入图片描述
在编辑框内编写list.add("鼠"),然后回车确认。

[,,]

10 Stream流

我们暂停在 Stream 的处理代码行时,可以将 Stream 的整个处理流程以图形化界面的形式展示。
在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellosc01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值