版本
IDEA 2019.3
主题:material dark。
操作系统:Mac OS
command 对应 ctrl
option 对于 alt
为项目配置了运行配置后,可以通过按 Shift+F9 在调试模式下启动它。
在 “调试工具” 窗口中,您可以看到框架和线程的状态、变量和表的列表。当您选择一个框架时,您会看到与所选框架相对应的变量。
调试快捷方式
切断断点:Ctrl+F8
恢复程序:F9
跳过(Step Over):F8,一行一行地往下走,如果这一行上有方法不会进入方法。
跳入(Step Into):F7,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
强制跳入(Force Step Into):Alt + Shift + F7,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
停止: Ctrl+F2
查看断点详细信息/所有断点(View breakpoint details/all breakpoints):Ctrl+Shift+F8
在插入符号中调试代码: Shift+F9 (当您停留在 main 方法中时),或 Shift+Alt+F9
断点
断点细节和条件
如果需要更改断点的详细信息,请按 Ctrl+Shift+F8。在这里,您可以指定断点条件。
IntelliJ IDEA断点的详细信息
如果您有任何实例标记了标签,您也可以在条件表达式中使用它:
如果要查看项目中的所有断点(使用更高级的设置),请再次按相同的快捷方式:Ctrl+Shift+F8。
字段断点
除了条件断点之外,您还可以使用字段断点。当访问某个字段以进行读取或写入时,这些断点将停止。要创建这样的一个断点,只需单击字段声明中的操作界面左侧的装订线:
IntelliJ IDEA字段断点
操作断点
如果您想要在特定的代码行中计算某些内容而不实际停止,则另一个操作可能会很有用。您可以使用 Action 断点来做到这一点。要创建一个操作断点,只需在按住 Shift 的同时点击操作界面左侧的装订线。
IntelliJ IDEA操作断点
临时断点
如果要创建仅停止一次的断点(临时断点),只需在按住 Shift+Alt 的同时点击操作界面左侧的装订线。
IntelliJ IDEA临时断点
禁用断点
通过在按住 Alt 的同时点击操作界面左侧的装订线可以快速地禁用任何断点。
IntelliJ IDEA禁用断点
调试器会话
智能开始
有时使用 IntelliJ IDEA 会发生这样的情况:你停留在一行代码上上,并希望进入一个特定的方法,但不是直接调用第一个方法。在这种情况下,您可以通过按下 Shift+F7 选择一个特定的方法进行智能化。这样的操作能够很好的节省时间。
IntelliJ IDEA调试器会话
拖放框架
如果您想在调试时“及时返回”,可以通过“放置帧”操作来完成。如果您的错误有很多的话,这个操作将会帮助到您。虽然这不会恢复您的应用程序的全局状态,但至少会让您返回到一堆帧。
IntelliJ IDEA拖放框架
在调试工具窗口参考描述了 图标。
运行到光标
有时您需要恢复程序并在另一行代码中停止,而不添加另一个断点。要达到这样的要求很简单:只需要按 Alt+F9 就可以了。
IntelliJ IDEA运行到光标
在调试工具窗口的工具栏参考中描述了该图标 。
标记实例
如果您希望在调试时始终识别特定实例,则可以通过 F11 或 “变量” 和 “监视” 选项卡中的上下文菜单将其标记为彩色标签。
IntelliJ IDEA调试
下次此实例出现在 “监视”、“变量” 或 “计算表达式” 中时,您将看到该标签:
IntelliJ IDEA调试
计算表达式
在调试模式下,可以通过按 Alt+F8 计算任何表达式。
IntelliJ IDEA计算表达式
这个工具就像在编辑器中一样,它提供代码完成,所以很容易输入任何表达式:
重新加载更换和热交换
有时候,您需要在不关闭进程的情况下在代码中插入小的更改。由于 Java VM 具有这样的功能 HotSwap,IDE会自动处理这些情况,并且当您在调试模式下编译已经更改的类时,会向您提供重新加载已更改的类。
请记住,Java VM 的 HotSwap 有许多限制,不支持重新加载静态字段和方法。
远程调试
在 IntelliJ IDEA 中绝对应该了解的有关于调试的事情就是远程调试了。远程调试意味着将调试器连接到已经在您或其他主机上的特定端口上运行的进程。这样,您就可以将调试器附加到独立运行的应用程序服务器。
要创建远程配置,请转到编辑配置并添加远程运行配置。在运行此配置之前,请确保指定了正确的主机和端口。。
设置
如果要更改默认的调试器设置,请在 IntelliJ IDEA 的设置/首选项中选择调试器。
Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。
基本操作
按钮
横排按钮
从左到右依次如下:
Show Execution Point (option + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行
Step Over (F8):步过,一行一行地往下走,如果这一行中有方法不会进入方法
Step Into (F7):步入
如果当前行中有方法,可进入方法内部,默认进入自己项目的方法内,而不会进入三方类库
Force Step Into (Alt + Shift + F7):强制步入
能进入任何方法,查看底层源码的时候可以用这个进入各种官方类库
Step Out (Shift + F8):步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
Drop Frame (默认无):回退断点,后面会详解
Run to Cursor (Alt + F9):运行到光标处,可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点. 如下 ,有时上面的 for 循环过长,我们直接跳转其下一行
- Evaluate Expression (Alt + F8):计算表达式,后面章节详细说明。
竖排按钮 - |
Rerun ‘xxxx’:重新运行程序,会关闭服务后重新启动程序
Update ‘tech’ application (Ctrl + F5):更新程序,一般在你的代码有改动后可执行这个功能。而这个功能对应的操作则是在服务配置里
Resume Program (F9):恢复程序,比如,你在第20行和25行有两个断点,当前运行至第20行,按F9,则运行到下一个断点(即第25行),再按F9,则运行完整个流程,因为后面已经没有断点了
Pause Program:暂停程序,启用Debug
Stop ‘xxx’ (Ctrl + F2):连续按两下,关闭程序。有时候你会发现关闭服务再启动时,报端口被占用,这是因为没完全关闭服务的原因,你就需要查杀所有JVM进程了
View Breakpoints (Ctrl + Shift + F8):查看所有断点
Mute Breakpoints:哑断点
- 点击后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序
- 再次点击,断点变为红色,有效。如果只想使某一个断点失效,可以在断点上右键取消Enabled,如下,则该行断点失效。
Get Thread Dump
更新程序,On ‘Update’ actions,执行更新操作时所做的事情,一般选择’Update classes and resources’,即更新类和资源文件。
一般配合热部署插件会更好用,如JRebel,这样就不用每次更改代码后还要去重新启动服务。
下面的On frame deactivation,在IDEA窗口失去焦点时触发,即一般你从idea切换到浏览器的时候,idea会自动帮你做的事情,一般可以设置Do nothing,频繁切换会比较消耗资源的。