发布时间:2025-07-13
浏览次数:0
基础debug
Force step info默认不显示,要想显示方法如下
方法/接口断点
在方法名称处设置断点,程序将在进入和退出方法时自动暂停,其中退出时的暂停状态可调,通过在菱形图标上右键点击即可进行设置。
在具体应用中,若断点设置于接口方法,系统将自动导航至相应的实现类方法,并在该方法的执行前后自动暂停,无需借助上下文来识别具体的实现类。
字段断点
在类字段层面设置断点,当字段信息发生改动(默认情况)或被查阅(需进行配置)时,程序将自动暂停执行。
场景:想知道某个属性在什么时候补赋值
异常断点
无需中断执行,仅需进入调试状态,遇到异常情况便会自动暂停(默认情况下不存在空指针错误,但您可以按照图示自行添加异常处理)。
场景:程序抛出了异常,想快速定位是哪出了异常
主动抛出异常
场景:某个方法没异常,但想在当前处抛出一个异常
在方法流程中设置一个中断点,随后在右侧断点处的堆栈上点击“抛出”选项,接着构建一个所需抛出的异常,如此一来,调用该方法的程序便能捕获到所设置的异常。
降帧
返回到调用方法前
执行完毕后若想重复执行,参照图中步骤,当前已至fun2方法,若在fun2的调用栈帧中执行Reset Frame操作,则会回到调用fun2的代码行,仿佛fun2尚未启动。同样,若在fun1的调用栈帧中执行Reset Frame,则可直接返回到main函数中调用fun1的初始位置。需注意的是,执行Reset Frame后,系统将重新进入fun2,此时fun2中的代码将再次运行。
条件断点
符合条件时才暂停
在多次执行循环操作的过程中,若希望达到特定条件后终止循环,例如图中所示,当变量i的值达到50时循环停止。特别留意,在条件断点上有一个带有小问号图标的地方。
在另一个情境中,当进行bean的初始化操作时,因为需要在循环中逐一初始化所有bean,若我们希望暂停初始化以专注于某个特定的bean,可以设置一个条件表达式,例如“(“”)”,该表达式内涉及的变量则是循环过程中用于存储待初始化bean名称的变量。
强制返回
结束当前流程,直接返回。
当我们调试到某个断点,想要中止调试时,若按
实际上,程序在终止调试后会继续执行,而我们通常希望程序在达到断点时立即停止,不再继续向下运行。在这种情况下,就需要使用Force功能。
场景:选择强制返回就会从断点处中止不再往后运行了
调试
进入代码时,可将代码转换过程详细展示出来
List numberList = new ArrayList();
numberList.add(null);
for (int i = 0; i < 20; i++) {
numberList.add(i);
}
ListstringList 等于 numberList 转换为流操作
.filter(Objects::nonNull)
.filter(i -> i % 2 == 0)
.map(String::valueOf)
将收集到的元素整合成一个列表。
}
执行表达式
执行表达式改变某个变量的值
在这个场景中,我们通常不会进入某个判断,但可以通过调整某个变量的数值,使其进入较少使用的分支。例如,在图中,当变量a的值为10时,我们不会进入if分支,然而我们期望进入该分支。这时,我们只需将a的值调整为60,然后重新进行单步调试,就可以成功进入if分支了。
远程调试
见《idea远程调试.docx》
多线程调试
在多线程代码上打上断点,执行到线程时会自动暂停
:暂停进入断点的线程,不影响其它线程
All:暂停全部线程,只Debug第一个线程
public static void main(String args[])引发异常 InterruptedException {
new Thread(() -> {
线程1启动,输出提示信息:开始执行。
输出:“线程1已结束”
}).start();
new Thread(() -> {
输出信息:“线程2启动”
输出信息:“线程2已结束。”
}).start();
主线程执行完毕,输出提示信息:“main thread end”。
Thread.sleep(10000);
}
代码展示的图示中,若我们选定了断点的挂起功能intellij idea找不到图标,那么位于断点位置的线程将会停止运行,与此同时,main线程则不会受到影响,依然能够继续执行并正常输出信息。
若我们选取了All作为断点挂起模式,那么在断点位置,线程将暂停运行,与此同时intellij idea找不到图标,主线程也会进入挂起状态,导致程序无任何输出。只有在执行单步操作时,主线程和断点处的线程才会恢复单步执行,但这个过程并不精确。
若在三个线程中分别设置断点,并且将每个断点配置为挂起状态,此时我们便能够借助下拉菜单挑选目标线程进行单步调试,进而实现对线程执行次序的操控。
如有侵权请联系删除!
Copyright © 2023 江苏优软数字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服务提供商
13262879759
微信二维码