一、使用条件断点定位问题
1、条件断点可以帮助我们定位一些奇怪的报错或程序行为。
2、在IDEA调试窗口中选中需要条件断点的代码行,右键-Add breakpoint-Condition
// 举例代码段
public class Test {
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println(sum);
}
}
3、条件输入框中添加布尔型的条件表达式
// 举例代码段的条件断点示例
public class Test {
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 100; i++) {
sum += i;
if(i == 50) {
System.out.println(sum);
}
}
System.out.println(sum);
}
}
二、日志断点记录流程信息
1、日志断点可以记录程序的流程信息,例如调用了哪些方法或者程序执行时间等。
2、在IDEA调试窗口中选中需要日志断点的代码行,右键-Add breakpoint-Log message
// 举例代码段的日志断点示例
public class Test {
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 100; i++) {
sum += i;
System.out.println("i = " + i + ", sum = " + sum); //断点
}
System.out.println(sum);
}
}
3、在“Log Expression”输入框中输入需要记录的信息,在“More”选项中可以设置输出日志等级。
三、动态调试操作
1、调试过程中可以动态地调整程序的行为。
2、在IDEA调试窗口中右键选中需要动态调整的代码行,选择Evaluate expression或者Watch选项卡。
// 举例代码段的动态调试示例
public class Test {
public static void main(String[] args) {
int sum = 0;
for(int i = 1; i <= 100; i++) {
if(i % 2 == 0) {
sum += i;
}
System.out.println(sum); // 断点
}
}
}
3、在“Evaluate expression”输入框中输入想要修改的变量值,例如:sum=10,点击”Enter”或选择”Evaluate”。
四、多线程调试
1、多线程并发调试需要注意多线程间的同步。
2、在IDEA调试窗口中,选择“View breakpoint”,选定“Java Exception Breakpoints”,选中“Synchronized”项。
// 举例代码段的多线程并发调试示例
public class TestThread extends Thread {
public static void main(String[] args) {
TestThread thread1 = new TestThread();
TestThread thread2 = new TestThread();
thread1.start();
thread2.start();
}
public synchronized void run() {
for(int i=0;i<5;i++) {
try {
sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "-" + i);
}
}
}
3、使用并发测试工具来验证多线程并发的结果是否正确。
五、利用IDEA的快捷键加速调试
1、提高调试效率,掌握IDEA的快捷键是必须的。
2、常见快捷键如下:
Ctrl+F8 : 跳过断点
Ctrl+Shift+F9 : 运行程序至光标所在代码行
Ctrl+Alt+Shift+R : 运行程序至光标所在代码行并打开Debug窗口
F8 : 单步运行
Shift+F8 : 跳过当前行,进入下一行
F7 : 进入当前行调用的方法
Shift+F7 : 跳过当前方法
Alt+F9 : 运行至光标所在行方法结束
Alt+F8 : 在Debug模式中计算表达式
3、快捷键可以根据个人喜好自定义。
原创文章,作者:SDFC,如若转载,请注明出处:https://www.506064.com/n/148556.html
微信扫一扫
支付宝扫一扫