IDEA 2020 Debug 调试详细使用笔记
IDEA 2020 Debug调试使用方法
IDEA Debug界面
debug界面;
如图:
- 启动:以Debug方式启动程序;
- 断点:在需要的位置点击左侧进行设置;程序运行到断点位置会停下来;
- Debug窗口,以Debug模式运行后会自动激活;如果没有自动激活看下图,勾选对应设置即可;
- 程序按钮:这里可以启动/停止程序
- 调试按钮:共八个按钮,分别对应有快捷键;
- 方法调用栈:显示正常运行线程所调用的方法,对应该区域右上角有显示与关闭所有方法,关闭的则会显示所有类库的方法;
- Variables:查看当前断点前的方法的变量;
- Watches:可以将variables区中的变量拖入该区域查看。
激活debug窗口
调试基本用法
调试按钮:
如图:每个按钮对应快捷键或有不同,请以实际为准;从左到右以此为:
Show Execution Point
(Alt + 10):快速定位到代码执行位置;Step Over
(F6):步过:一行一行执行,如果该行有方法不会进入;Step Into
(F5):步入:如果当前行有方法,可以进入方法,常用于进入自定义方法;Force Step Into
(Alt + Shint + F7):强制步入:可以进入任何方法,常用于查看底层源码库;Step Out
(F7):步出:从步入的方法中hu回到步入处;Drop Frame
:回退断点;详见回退断点
;Run to Cursor
(Ctrl + R):运行到光标处:可以将光标定位到需要查看的位置,然后点击该按钮就会执行到光标所在行;Evaluate Expression
(Ctrl + U):计算表达式;详见计算表达式
;
程序按钮:(对应快捷键以自己的为准)
Return "application"
:重新运行程序;update "application"
:更新程序;Resume Program
:恢复程序,常用于放行程序,即断点执行完成,流程运行完;Pause Program
:暂停程序,启用Debug;Stop "application"
:双击关闭程序;View Breakpoints
:查看所有断点窗口;Mute Breakpoints
:静音、哑的,点击会将断点变为灰色,所有断点失效,Resume Program
可以直接放行,再次点击断点恢复;如果想指定断点失效,可以右键对应断点,取消勾选Enabled;
变量查看
可以在代码右侧看到变量信息
光标悬浮在变量上会弹出变量信息,点击➕号,显示详细信息;
在variables中查看所有信息
在watches中查看信息,通过 ➕ 号可以搜索想要变量信息;
也可以将variables区中的变量拖入watches区中查看变量;
如果没有watches窗口,在variables区中有一个眼睛以用的按钮,点击即可打开;如下图的下图;
打开watches区;
计算表达式
在调试按钮组中有一个
Evaluate Expression
按钮,可以在调试过程中计算某个值的值;
点击打开窗口,可以输入计算表达式,也可以框选要计算的表达式,然后点击打开窗口,回车或点击Evaluate进行计算;
如:计算 user 是否为空;
这个按钮也可以对方法进行计算,所得结果是方法的返回值;如图;
断点处添加Log
如果想在某处查看某个值是多少,不必添加输出语句,因为后期还需要删除。
如图,在要添加断点查看值处shift+左键弹出选项框,此时断点是黄色的,勾选Evaluate and log,并定义要查看的变量值。
这样的log只有在debug时才会打印,正常运行时不会打印。
还可以勾选上面三个值,输出更详细的日志信息。
智能步入
如图,一行方法中的参数也是个方法,或则有多个方法,如何能进入想看的方法查看,
step into
或Force Step Into
都只会按顺序执行,而智能步入(Smart Step Into
)就可以选择方法进入;
Smart Step Into
这个按钮在上面的调试组里没有,位置:Run >> Debugging Actions >> Smart Step Into
点击智能步入,两个方法背景色会变化,提示选择一个方法进入。点击进入;
断点条件设置
可以给断点设置条件,当条件满足时才会停在断点处;
如图,遍历list时,设置断点条件list.get(i),当list.get(i)= -5 时断点才生效;
- 点击
View Breakpoints
,可以给断点设置;- 勾选Conditions,设置条件为 list.get(i)==-5;
- 勾选Breakpoint hit message,会将断点号输出到控制台,如下图的下图,可以确定断点执行信息;
- 勾选Evaluate and log,可以在这里执行条件代码时计算值 并输出到控制台,如下图的下图;
设置号条件后启动Debug,可以看到断点直接按我们的条件停下来,-5的下标为2,断点变量 i 的值也是2,满足我们设置的条件;
View Breakpoints
也可以添加异常断点;如图,➕选择exception 断点,搜索异常,如添加空指针异常断点,程序会自动定位在出现了空指针异常的行;
列表集过滤
当一个结果为集合或数组,或是一个大列表,在调试时我们可能需要在这个列表中查找特定的值,可以通过右键对应列表选择
filter
来对结果进行过滤筛查;
如图,list列表中有一百个数据,右键选择filter;如图中1,输入过滤条件,回车保存;图中2结果以及过滤,图中3可以删除改过滤条件;
如果想修改过滤条件 可以右键过滤条件选择Edit;
回退断点
回退断点即程序重新回到方法第一次调用处;
在调试时,有时候需要重走一次执行流程,Idea提供 回退断点 而不用频繁重启发起请求;
如图,controller层调用service层的get方法,程序启动停到controller层断点处,调试程序往下执行,Step Into 步入service 方法中,此时点击回退按钮程序就会回退到controller层调用service方法处,而不会回退到断点处!
回退方式一:点击调试按钮中的
Drop Frame
;回退方式二:在方法调用栈选择要回退的方法,右键选择
Drop Frame
;
回退断点不能改变已经改变了的参数,也就是数据的修改是无法回滚的。如数据库、集合;
中断Debug
有时在Debug时发现某些参数是错误的,而Debug 的流程是删除数据库数据,我们想停止Debug不执行后续流程,并且不想删除数据库数据,当然可以直接关闭程序,
但我可以通过
Force Return
,强制返回一个结果;
点击
Force Return
,弹出返回值 窗口,如下图,这个方法返回类型为PageResult,这里我new 了一个对应的类型强制返回,不在执行后面的流程;
异常断点
当代码遇到异常时,我们往往需要确定是什么异常,由谁引起的异常。
打开View Breakpoints如图,➕选择exception 断点,搜索异常,如添加空指针异常断点,程序会自动定位在出现了空指针异常的行;
多线程调试
默认情况下Debug无法同时发起多个请求,也就无法同时进行多个Dedug,只能在一个线程中顺序调试;这是因为Idea Dug默认线程阻塞级别为ALL,多个线程同时请求会被阻塞,只有当前线程执行完才会走其他线程;
如图,分别有两个请求,默认情况下当点击了查询文章请求后程序会停在查询文章的断点处,此时如果发送登录请求会无法发送,页面始终阻塞在查询请求;
点击程序按钮中的
View Backpoints
,如图,选择断点,勾选Thread,点击Make Default设置默认;保存后就可以同时发起其他请求;
图实例有两个断点,两个都要分别勾选Thread,并设为默认!!
设置完成后启动Debug,先发送查询请求,程序停在查询断点处;此时再次发送登录请求,发现可以请求,
Debug提示 断点到达了线程XXX10,可以切换线程,点击切换,方法调用栈的方法就会变为登录方法线程;
方法调用栈也可以切换线程,分别线程XXX10 和 XXX4 ,选择对应的线程程序就会跳到对应线程的debug上;
字段断点
类中的某个字段的值到底是在哪里改变的,你要一点点追踪,逐步排查,稍不留神,就可能有遗漏。
IDEA 可以为某个字段添加断点,当字段值有修改时,自动跳到相应方法位置。
- 在字段定义处鼠标左键添加断点(「眼睛」形状)
- 「眼睛」图标上鼠标右键
- 弹框中勾选上 Field access 和 Field modification 两个选项
如果修改字段值的方法比较多,也可以在 Condition 的地方定义断点进入条件。
标签:
相关文章
-
无相关信息