IntelliJ IDEA 2018.3 调试

2019年03月29日 17:30 · 阅读(1323) ·

[目录]

调试器设置

文件-设置-调试器

调试方法

添加/取消断点

鼠标放在上图中红点处点击,可以添加/取消断点

开始调试

添加断点后,点击工具栏上的调试图标,开启调试

F7 进入下一步,从下图可知,已经计算出了变量 i 的值

给断点设置条件

在断点上邮件,可以在弹窗的条件处设置条件

这里我设置了一个条件 i==90

多线程的情况,这里还可以给某个线程设置断点,选择线程
输入条件 Thread.currentThread().getName().equals("线程名称")

在这个断点的下面再添加一个断点,重新启动调试,调试的选中行直接跳到了下一个断点处,说明这个条件没有满足

也可以点击 More 链接,设置更多的条件

临时窗口

可以查看,设置变量的值

光标放在要设置的行上,或选中要设置的变量 Alt + F8

这里我设置 i=100

F9 进入下一个断点,可以看到结果发生了变化

在新版 IDEA 中,可以在界面中直接设置变量值

进入下一个断点

F9 进入下一个断点

调试后,按 F9 会直接进入第8行的断点

调试详情

不想往下执行了,直接跳出

找到对应的帧,右键-强制返回

相关快捷键总结

快捷键 说明
F7 进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果该方法体还有方法,则不会进入该内嵌的方法中
F8 进入下一步,如果当前行断点是一个方法,则不进入当前方法体内
F9 恢复程序运行,但是如果该断点下面代码还有断点则停在下一个断点上
Alt + F8 选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果
Alt + F9 运行至光标处
Alt + F10 定位到断点
Ctrl + Alt + F9 强制运行至光标处
Ctrl + F8 设置光标当前行为断点,如果当前已经是断点则去掉断点
Shift + F7 智能步入。断点所在行上有多个方法调用,会弹出进入哪个方法
Shift + F8 跳出,表现出来的效果跟 F9 一样
Ctrl + Shift + F8 查看断点
Alt + Shift + F7 进入下一步,如果当前行断点是一个方法,则进入当前方法体内,如果方法体还有方法,则会进入该内嵌的方法中,依此循环进入
Alt + Shift + F8 返回上一步
Alt + Shift + F9 选择 Debug
Alt + Shift + F10 选择 Run

解决调试步入源码的问题

2020年6月17日17:58:46 更新

参考:IDEA中debug程序的时候不想进入某些包或者类的解决方法

问题描述

在之前的调试中,老是遇到一个问题。

比如下面的代码:

我只想运行程序之后,进入第一个断点,接着跑到方法括号末尾,就能够看到结果。

但实际情况往往是,执行到最后一个括号之后,执行的光标老是跑到一些其它地方,例如

步出之后,又跑到其它地方

接着又步出

进行了很多次步出,程序还是没有运行完,后来干脆放弃了,直接放弃调试模式,使用运行模式再调用一次接口看结果。

原因分析

断点步入了框架源代码里面去了。

问题解决

参考:IDEA中debug程序的时候不想进入某些包或者类的解决方法

查看上面步入的源代码部分,看看是哪个包

看代码的最上方,要么是

  1. package org.springframework.aop.framework.adapter;

要么是

  1. org.apache.*

还有一些其它的。

在设置里面限制这些包的步入,文件-设置-构建,执行,部署-调试器-步进

设置限制下面两个包的步入

  1. org.springframework.*
  2. org.apache.*

应用-确定

测试结果

再次启动调试,执行到方法最后的大括号之后,发现不再进入这些框架的源码里面了,结果也很快出来。

IDEA Tips:Debug跳转任意行

IDEA Tips:Debug跳转任意行

安装插件 Jump to Line

运行调试后会出现下面的箭头

想跳转到哪里,拖动即可。

IDEA 手动抛出异常

来源:IDEA Tips:Debug时如何优雅地制造异常?

SpringCloud 项目 Server 调试无法运行和进入断点

问题描述

项目里面有 SpringCloud 项目。
平常情况下,正常运行代码,我都是
调试 - Server
调试 - Web
都可以正常运行,断点也都能进入。

但是突然某一时刻,就是上一分钟还正常,下一分钟,突然 Server 的断点就再也进不去了,也无法正常访问 Server 了。

需要

启动 - Server
调试 - Web

才可以正常跑。但是 Server 里面的断点,再也进不去了。
无论重启多少次都不行,非常不方便。

问题解决

突然某一天,我想到是否是因为 调试 - Server 时,进入了某个不为人知的断点,导致 Server 无法正常启动?
于是我打算把所有断点都删掉,快捷键:Ctrl + Shift + F8,删除所有 Java行断点

重新启动

调试 - Server
调试 - Web

打上对应断点,都可以正常进入了。

stream 流 debug 调试方法