素材巴巴 > 程序开发 >

IDEA 2020 Debug 调试详细使用笔记

程序开发 2023-09-05 19:07:58

IDEA 2020 Debug调试使用方法

IDEA Debug界面

debug界面;

1

如图:

  1. 启动:以Debug方式启动程序;
  2. 断点:在需要的位置点击左侧进行设置;程序运行到断点位置会停下来;
  3. Debug窗口,以Debug模式运行后会自动激活;如果没有自动激活看下图,勾选对应设置即可;
  4. 程序按钮:这里可以启动/停止程序
  5. 调试按钮:共八个按钮,分别对应有快捷键;
  6. 方法调用栈:显示正常运行线程所调用的方法,对应该区域右上角有显示与关闭所有方法,关闭的则会显示所有类库的方法;
  7. Variables:查看当前断点前的方法的变量;
  8. Watches:可以将variables区中的变量拖入该区域查看。

激活debug窗口

2

调试基本用法

调试按钮:

如图:每个按钮对应快捷键或有不同,请以实际为准;从左到右以此为:

3

  1. Show Execution Point(Alt + 10):快速定位到代码执行位置;
  2. Step Over(F6):步过:一行一行执行,如果该行有方法不会进入;
  3. Step Into(F5):步入:如果当前行有方法,可以进入方法,常用于进入自定义方法;
  4. Force Step Into(Alt + Shint + F7):强制步入:可以进入任何方法,常用于查看底层源码库;
  5. Step Out(F7):步出:从步入的方法中hu回到步入处;
  6. Drop Frame:回退断点;详见回退断点
  7. Run to Cursor(Ctrl + R):运行到光标处:可以将光标定位到需要查看的位置,然后点击该按钮就会执行到光标所在行;
  8. Evaluate Expression(Ctrl + U):计算表达式;详见计算表达式

程序按钮:(对应快捷键以自己的为准)

  1. Return "application":重新运行程序;
  2. update "application":更新程序;
  3. Resume Program:恢复程序,常用于放行程序,即断点执行完成,流程运行完;
  4. Pause Program:暂停程序,启用Debug;
  5. Stop "application":双击关闭程序;
  6. View Breakpoints:查看所有断点窗口;
  7. Mute Breakpoints:静音、哑的,点击会将断点变为灰色,所有断点失效,Resume Program可以直接放行,再次点击断点恢复;如果想指定断点失效,可以右键对应断点,取消勾选Enabled;

变量查看

可以在代码右侧看到变量信息

5

光标悬浮在变量上会弹出变量信息,点击➕号,显示详细信息;

6

在variables中查看所有信息

7

在watches中查看信息,通过 ➕ 号可以搜索想要变量信息;

也可以将variables区中的变量拖入watches区中查看变量;

如果没有watches窗口,在variables区中有一个眼睛以用的按钮,点击即可打开;如下图的下图;

8

打开watches区;

9

计算表达式

在调试按钮组中有一个Evaluate Expression按钮,可以在调试过程中计算某个值的值;

点击打开窗口,可以输入计算表达式,也可以框选要计算的表达式,然后点击打开窗口,回车或点击Evaluate进行计算;

如:计算 user 是否为空;

11

这个按钮也可以对方法进行计算,所得结果是方法的返回值;如图;

在这里插入图片描述

断点处添加Log

如果想在某处查看某个值是多少,不必添加输出语句,因为后期还需要删除。

如图,在要添加断点查看值处shift+左键弹出选项框,此时断点是黄色的,勾选Evaluate and log,并定义要查看的变量值。

这样的log只有在debug时才会打印,正常运行时不会打印。

在这里插入图片描述

还可以勾选上面三个值,输出更详细的日志信息。

智能步入

如图,一行方法中的参数也是个方法,或则有多个方法,如何能进入想看的方法查看,step intoForce Step Into都只会按顺序执行,而智能步入(Smart Step Into)就可以选择方法进入;

ss

Smart Step Into这个按钮在上面的调试组里没有,位置:Run >> Debugging Actions >> Smart Step Into

gg

点击智能步入,两个方法背景色会变化,提示选择一个方法进入。点击进入;

ggg

断点条件设置

可以给断点设置条件,当条件满足时才会停在断点处;

如图,遍历list时,设置断点条件list.get(i),当list.get(i)= -5 时断点才生效;

  1. 点击View Breakpoints,可以给断点设置;
  2. 勾选Conditions,设置条件为 list.get(i)==-5;
  3. 勾选Breakpoint hit message,会将断点号输出到控制台,如下图的下图,可以确定断点执行信息;
  4. 勾选Evaluate and log,可以在这里执行条件代码时计算值 并输出到控制台,如下图的下图;

xx

cc

bb

设置号条件后启动Debug,可以看到断点直接按我们的条件停下来,-5的下标为2,断点变量 i 的值也是2,满足我们设置的条件;

jj

View Breakpoints也可以添加异常断点;如图,➕选择exception 断点,搜索异常,如添加空指针异常断点,程序会自动定位在出现了空指针异常的行;

yy

列表集过滤

当一个结果为集合或数组,或是一个大列表,在调试时我们可能需要在这个列表中查找特定的值,可以通过右键对应列表选择filter来对结果进行过滤筛查;

如图,list列表中有一百个数据,右键选择filter;如图中1,输入过滤条件,回车保存;图中2结果以及过滤,图中3可以删除改过滤条件;

如果想修改过滤条件 可以右键过滤条件选择Edit;

jj

kk

回退断点

回退断点即程序重新回到方法第一次调用处;

在调试时,有时候需要重走一次执行流程,Idea提供 回退断点 而不用频繁重启发起请求;

如图,controller层调用service层的get方法,程序启动停到controller层断点处,调试程序往下执行,Step Into 步入service 方法中,此时点击回退按钮程序就会回退到controller层调用service方法处,而不会回退到断点处!

ee

回退方式一:点击调试按钮中的 Drop Frame

回退方式二:在方法调用栈选择要回退的方法,右键选择Drop Frame

111

回退断点不能改变已经改变了的参数,也就是数据的修改是无法回滚的。如数据库、集合;

中断Debug

有时在Debug时发现某些参数是错误的,而Debug 的流程是删除数据库数据,我们想停止Debug不执行后续流程,并且不想删除数据库数据,当然可以直接关闭程序,

但我可以通过Force Return,强制返回一个结果;

hh

点击Force Return,弹出返回值 窗口,如下图,这个方法返回类型为PageResult,这里我new 了一个对应的类型强制返回,不在执行后面的流程;

33

异常断点

当代码遇到异常时,我们往往需要确定是什么异常,由谁引起的异常。

打开View Breakpoints如图,➕选择exception 断点,搜索异常,如添加空指针异常断点,程序会自动定位在出现了空指针异常的行;

在这里插入图片描述

多线程调试

默认情况下Debug无法同时发起多个请求,也就无法同时进行多个Dedug,只能在一个线程中顺序调试;这是因为Idea Dug默认线程阻塞级别为ALL,多个线程同时请求会被阻塞,只有当前线程执行完才会走其他线程;

如图,分别有两个请求,默认情况下当点击了查询文章请求后程序会停在查询文章的断点处,此时如果发送登录请求会无法发送,页面始终阻塞在查询请求;

sss

点击程序按钮中的View Backpoints,如图,选择断点,勾选Thread,点击Make Default设置默认;保存后就可以同时发起其他请求;

图实例有两个断点,两个都要分别勾选Thread,并设为默认!!

ee

设置完成后启动Debug,先发送查询请求,程序停在查询断点处;此时再次发送登录请求,发现可以请求,

Debug提示 断点到达了线程XXX10,可以切换线程,点击切换,方法调用栈的方法就会变为登录方法线程;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bTqiSWA6-1616836375097)(assets/1616827693120.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dCrEb3bC-1616836375099)(assets/1616827890915.png)]

方法调用栈也可以切换线程,分别线程XXX10 和 XXX4 ,选择对应的线程程序就会跳到对应线程的debug上;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRu05cio-1616836375101)(assets/1616827941831.png)]

字段断点

类中的某个字段的值到底是在哪里改变的,你要一点点追踪,逐步排查,稍不留神,就可能有遗漏。

IDEA 可以为某个字段添加断点,当字段值有修改时,自动跳到相应方法位置。

  1. 在字段定义处鼠标左键添加断点(「眼睛」形状)
  2. 「眼睛」图标上鼠标右键
  3. 弹框中勾选上 Field access 和 Field modification 两个选项

在这里插入图片描述

如果修改字段值的方法比较多,也可以在 Condition 的地方定义断点进入条件。


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。