你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

Intellij IDEA 使用 Debug 追踪代码运行流程,无法删除文件咋办?

发布时间:2025-12-20

浏览次数:0

.com//p/idea-debug.html

Debug 是专门用于追踪代码运行流程的,一般是在程序运行之时出现异常的状况,当启用 Debug 模式后能够对异常发生的位置展开分析并进行定位,同时还能知晓在运行进程里参数的变化情况。通常来讲,我们也能够借助启用 Debug 模式,通过跟踪代码的运行流程来学习三方框架的源码。

所以,去学习在IDEA里怎样把调试功能用好,主要包含下面这些内容:,。

一、Debug开篇

二、基本用法&快捷键

三、变量查看

四、计算表达式

五、智能步入

六、断点条件设置

七、多线程调试

八、回退断点

九、中断Debug

一、Debug开篇

首先看下IDEA中Debug模式下的界面。

下面呈现的,是于IDEA里开启Debug模式,步入断点之后所出现的界面,在我所处的这个情况,或许会跟Mac的图标等方面存在一些不一样的地方。接下来就简要地说一说图中标记的那8个位置:

1. 开启服务以Debug模式,那么左边的其中一个按钮是以Run模式开启。于开发期间,我通常会径直开启Debug模式,借此便于随时对代码实施调试。

二、断点,去单击左边行号栏的左键于在其中,打或者取消断点者通过快捷键Ctrl + F(这里逗号后的符号理解成8的书写形式一起)8,断点行它的颜色能够自己进而去设置 。

3. Debug窗口:当访问请求抵达首个断点时,Debug窗口会自行被激活。要是未自行激活,能够前往设置里进行设置,就如同图1.2所呈现的那样。

首先,存在一款调试按钮,其数量总计为8个按钮,在这众多按钮之中所对应着的调试主要功能作用,当以那个具体鼠标悬停于按钮之上这种情况,方可去用来查看与之对应的快捷键,并且,在菜单栏Run那里能够找寻到与之相同的相对应功能,就如同图1.4所展示的那样。

5. 服务按钮:可以在这里关闭/启动服务,设置断点等。

6. 方法调用栈,这个地方呈现出了该线程在调试期间所历经的全部方法,去勾选右上角的。

Show All

如果不进行按钮操作,那么就不会呈现出其他类库的方法,不然的话,此处将会存在数量相当繁复的一系列具有某种特色的方法。

7. :在变量区可以查看当前断点之前的当前方法内的变量。

8. :查看变量,可以将区中的变量拖到中查看

勾选设置里的Show debug on ,那么请求进入断点之后,Debug窗口会自动被激活 。

倘若你那IDEA的底部并未呈现工具栏或者状态栏的话,能够于View当中予以打开,令工具栏显现出来这般会便利我们进行使用。是可以自行前去尝试下这四个选项的。

于菜单栏Run之中,存在调试所对应的功能,与此同时,能够查看与之对应的快捷键 。

二、基本用法&快捷键

Debug调试的功能主要对应着图一中4和5两组按钮:

1、首先说第一组按钮,共8个按钮,从左到右依次如下:

2、第二组按钮,共7个按钮,从上到下依次如下:

先进行程序更新,在特定的“On '' ”情况下,针对它,去贯彻执行更新操作期间所做的那些事情,通常会挑选“ and ”,也就是要去更新类以及资源文件。

通常情况下,要是搭配热部署插件一块儿来用的话,会更为好用些,比如说,如此一来就可以不必在每次对代码加以更改之后,还得去重新启动服务了。至于怎样激活,会在最后章节进行附属说明的。

接下来要说的On frame ,于IDEA窗口失去焦点之际触发,此即通常而言当你从idea切换至浏览器时,idea会自行着手去做的事情,一般状况下能够进行设置Do ,频繁进行切换的话是较为耗费资源的。

三、变量查看

Debug程序的时候,去跟踪查看变量的那种变化情况实在特别必要,这里就简要说说IDEA里能够查看变量之处,相信多数人对此都知晓。

1、如下,在IDEA中,参数所在行后面会显示当前变量的值。

第二步,当光标悬浮停顿到参数之上的时候,能展示呈现当前变量的相关信息,接着点击一下,从而打开详情,就如同图3.3那样子,我通常情况下会运用采用这种办法方式,其具备快捷便利的特性。

3、在里查看intellij idea无法删除文件,这里显示当前方法里的所有变量。

4、于其中,点击新建观察项,输入所需查看的变量。或者能够通过从其中拖至其中来进行查看。

如果你发现你没有,可能在下图所在的地方。

四、计算表达式

图4.1的按钮,就是前面所说的计算表达式的按钮, (Alt + F8) ,借助这个操作,于调试进程里,能够算出某个表达式的值,无需再度打印信息。

一、按下 Alt 与 F8 这两个键,或者按下按钮,又或者,你能够选中某一个表达式之后再按下 Alt 与 F8 这两个键,此时会弹出用来计算表达式的窗口,情况如下,紧接着回车,或者点击计算表达式所具有的值。

这个表达式,它所能够是的,并非仅仅只是一般变量又或者参数,还能够是方法,当于你的一行代码之中,调用了几个方法的情况之下,就能够借助这种方式,去查看查看某个方法的返回值。

步骤二,进行变量设置,于用于计算表达式的框体之中,能够对变量的值予以更改,如此一来,在某些时候,便能够为我们调试各类值的情形提供便利,可不是这样么 。

五、智能步入

想一想,一行代码当中存在好几个方法,怎样仅挑选某一个方法进去。之前讲过运用Step Into (Alt + F7) 或者Force Step Into (Alt + Shift + F7)进到方法内部,然而这两个操作会依据方法调用顺序逐个进入,这颇为麻烦。

关于智能步入是极为便利的,智能步入这一功能,在Run当中能够被看到,其为Smart Step Into (Shift + F7),并且呈现于图5.1如此样子,像这般的话,智能步入就变得十分轻易了 。

按压Shift与F7这两个按键,便会自行定位至此刻的断点所在行,并且罗列出需要进入的方法,就如同图5.2所呈现的那般,轻点方法从而进入到方法的内部。

假设仅存在一个办法,那么便径直进入,如同Force Step Into这般 。

六、断点条件设置

设置断点条件之后,当条件得以满足之时,才会停留在断点之处,要是条件不满足,那就直接运行。

平常,当咱们于遍历一个相对较大的集合或者数组之际,处于循环内部设定了一个断点,难道我们就得逐个去查看变量的值吗?那必然会很累,说不定你还会错过这个值从而得重新再来一回。

1、于断点之上,以右键点击,进而直接实施针对当前断点条件的设置,情形如同图6.1所示,我所设定的是,当exist呈现为true这一状态的时候,断点方才会产生生效的情况。

二、轻点View(Ctrl + Shift + F8)这样的组合键,进而去查看到所有的断点。

Java的Line,将所有断点予以显示,于右边进行勾选操作,再去设置断点所需的条件。

对Log to进行勾选,进而就会把当前断点行输出至控制台,就跟图6.3那样 ,。

勾勾选项,并且进行记录操作,能够于运行这一行代码之际,算出当中表达式的数值,进而把得出之结果,输出至控制台里面。

3、再说说右边的过滤,这些一般情况下不常用,简单说下意思。

根据图6.5里的实例ID进行实例的过滤操作,可我这儿未能成功,不清楚是何种缘由intellij idea无法删除文件,知晓情况的朋友请留下话语。

Class :类过滤,根据类名过滤,同样没有成功....

用以循环于其中的计数,要是断点处于循环里,便能设定此值,循环若干次数之后停留在断点之处,接踵而至的循环也通通会停留在断点之处。

4、存在异常断点,借助设置异常断点,于程序里出现需要进行拦截的异常之际,会自行定位至异常行。

如照着图6.6所示,去点击那个标识为“+”字符号之处以便添加Java ,接着要进行的是添加异常断点。随后输入那个需要设置断点的异常类,如同图6.7所呈现的那样,在这一系列操作之后便能够在Java 当中看到所添加成功的异常断点。

我在此处增添了一个异常断点,像图6.8那样,在出现空指针异常的状况下,会自动定位至为空指针异常的那一行。

七、多线程调试

在通常局面下我们于调试之际是处于一个线程那儿的,一步接着一步朝着下方行进。但是偶尔你会发觉在进行Debug之际,想要去发起另外一个请求却都不能够开展了?

此乃源于,IDEA于Debug之际,其默认阻塞级别为ALL,会致使其它线程遭阻塞,唯有在当下调试线程行进结束之际,其他线程方能运行。能够于View之中进行选择,恰似图7.1所示那般,随后点击Make,将其设置成默认选项。

切换线程,于图7.2里的下拉列表当中,能够切换当前线程,像我此地存在两个Debug的线程,切换另一个便会进入另一个Debug的线程。

八、回退断点

在调试的时候,想要重新走一下流程而不用再次发起一个请求?

1、首先,来认识一下这个方法调用栈,就如同图8.1所示这般,首先是请求进入的那个方法,然后会调用方法,其他的我们呢暂且先不去管它,而最上面那个方法乃是当前断点所在的方法是也。

2、断点回退

有一种被称作断点回退的情况,实际上就是回到了前一例方法调用的起始地方,于IDEA之中进行测试的时候,无法逐行地回退,或者回到上一个断点所在之处,而仅仅是回到了上一个方法 。

回退存在两种方式,其一为Drop Frame按钮(图8.2标注),按照被调用的办法逐次回退,涵盖三方类库的其他办法(取消Show All按钮即可展示三方类库的方法,如图8.3所示)。

以第二种方式而言,先要在调用栈方法那里,去挑选出打算回退的方法,之后右键点击并选择Drop Frame(图8.4),接着回退到该方法的上一个方法调用的地方,在这个时候再按下F9( ),如此一来就能够看到程序进入到该方法的断点之处了。

但要留意一点,断点回退仅仅能够再度执行一遍流程,之前某些参数或者数据的状态已然发生改变的情况,是没办法回退到先前状态的,像对象、集合、更新了数据库数据之类的情况即为如此,。

九、中断Debug

想要在Debug的时候,中断请求,不要再走剩余的流程了?

有些时段,当我们察觉到传入的参数存在错误之后,便不想再继续执行后续的流程了,那该如何去中断此次请求呢,(后续的流程可是要对数据库数据进行删除操作的呢....),难道竟然要去关闭服务然后重新启动程序吗,嗯,本人以前的确也曾如此行事 。

确切来讲,我也并没发觉能够直接中断请求的途径(除了将服务关闭之外),不过能够借助Force,也就是强制返回这种方式来避开后续的流程,就如同图9.1所展示的那样。

将Force点击一下,Value的窗口便会弹出,我所采用的这个方法其返回类型是Map,所以,我在此处直接进行返回,以此来实现强制返回,进而使得后续的流程不再继续执行。或者你能够new () 。

如有侵权请联系删除!

13262879759

微信二维码