初学者快速上手IDEA Debug功能

IDEA Debug

debug对于一个程序员来说那是不得不会的技能,它的重要性对于调试程序来说不言而喻,举个例子,IDE就像吃饭的碗,而debug就像筷子。为了大家更好的吃饭,今天给大家带来2019版IDEA中的Debug用法

Debug模式的开启

首先在程序代码中加入断点,这里加入断点可以通过点击每行最前面的号码栏

在这里插入图片描述

然后就可以点击运行旁边的小绿虫,即可进入代码debug模式

在这里插入图片描述

开发中,debug模式运用十分广泛,进入debug模式后我们可以看到debug窗口的界面

在这里插入图片描述

Debug模式界面操作

先从图中几个区来介绍常用的模块

在这里插入图片描述

服务按钮

从上至下依次是

①Rerun ‘xxxx’(Ctrl+F5),rerun不就是重跑的意思嘛,点这里会关闭服务后再重新启动程序

②Resume Program(F9),恢复程序,比如,你在第20行和25行有两个断点,当前运行至第20行,按F9,则运行到下一个断点(即第25行),再按F9,则运行完整个流程,因为后面已经没有断点了。

③Pause Program,暂停程序,启用Debug,我暂时也没用到过,可能是程序执行时间很长时需要中断debug的情况下使用

④Stop ‘xxx’(Ctrl+F2),关闭程序。

⑤View Breakpoints(Ctrl+shift+F8),查看所有断点,点击以后会弹出断点预览窗口,管理多个断点。

⑥Mute Breakpoints,点击以后所有断点失效,断点符号由红色圆圈变成灰色圆圈,此时会直接运行完程序,在此点击即可恢复断点可用状态。

调试按钮(核心)

在这里插入图片描述

① Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。

② Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。

③ Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。

④ Force Step Into (Alt + Shift + F7):强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。

⑤ Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。

⑥ Drop Frame (默认无):回退断点,下文介绍。

⑦ Run to Cursor (Alt + F9):运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。

⑧ Evaluate Expression (Alt + F8):计算表达式,下文介绍。

为了方便展示,这里以我的代码进行调试,我主要是new了一个HashMap,并且往里面存了12个键值对。

变量查看

在这里插入图片描述

这里的Variables窗口可以查看当前方法里的所有变量,当然也可以直接在代码块中查看,新版IDEA应该都有这个功能吧。在debug过程中,参数所在的行末尾会浅色显示当前变量运行到这里的值。

在这里插入图片描述

若是代码太长没有在行尾显示,则可以直接将光标移动至想要查看的变量,停留即可显示变量信息,这里的加号点一下,就可以在variables模块里多一个监控变量(有的会新开一个窗口叫watches),相当于给这个遍历加了一个”关注“,他的一举一动都会被你发现哦。

在这里插入图片描述

如果代码中还有if判断条件的情况,鼠标指向判断条件,也会显示出判断结果,我很常用,可能是懒得想吧

在这里插入图片描述

方法调用栈

这里会显示所有该线程调试所经过的方法,勾选右上角倒三角的[Show All Frames],就不再显示其他类库的方法,否则会显示一大堆的方法。

这里可以看到当前debug运行在哪个方法里。

在这里插入图片描述

调试步骤

智能步入

在这里插入图片描述

这个功能实测在新版idea其实完全不必要,当一行有多个方法系统不知道进入哪个时,已经默认会变色让你选,可以看到每个方法都高亮了,鼠标指向即可进入指定方法。

回退断点

在这里插入图片描述

这里的断点回退,就是退到上一个方法调用的开始处,在IDEA里测试没有办法一行一行退回到上一个断点处,只能回到上一个方法,可以看到我这里已经跳进了add12,如果我点回退,则会回退到add11这里。其实这里就相当于退掉了上一次方法调用压栈的信息。

在这里插入图片描述

计算表达式

在这里插入图片描述

前面提到调试按钮中的最后一个小计算器图标的,Evaluate Expression (Alt + F8) ,他的功能是可以计算调试过程中的某个表达式的值,而不用再打印信息,在使用前先用光标选中表达式,点击’计算器’图标,再点击右下角Evaluate即可计算结果。这个’小计算器’不仅仅会计算一般的表达式,调用了多个方法的表达式的返回值也可以通过它来计算哦。

多线程下调试设置

在这里插入图片描述

调试过程在frame的下拉框切换线程即可进入另一个Debug线程。

Debug过程中修改变量值

在这里插入图片描述

可以看到这里的a在进入if语句时值为10,如果在实际工程中,我想进判断语句看看能发生什么,总不能去代码里改变量吧,这里可以在variables里对着想要修改的变量右击,单击Set Value即可。

更改前:

在这里插入图片描述

更改后:

在这里插入图片描述

学会debug以后,查看各种方法的源码都不是事儿啦。

附:(当HashMap首次达到阈值时进入的扩容resize过程)

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

是不是一目了然?所以这个debug的功能是一定要会的哦

猜你喜欢

转载自blog.csdn.net/weixin_43876186/article/details/108447707