调试代码
最后修改时间:2023 年 9 月 29 日IntelliJ IDEA 提供了 Java 代码的调试器。根据安装/启用的插件,您还可以调试用其他语言编写的代码。
在调试会话期间,您可以启动带有附加调试器的程序。调试器的目的是干扰程序执行并为您提供有关幕后发生情况的信息。这有助于检测和修复程序中的错误。
笔记
有多种方法可以运行调试会话,但是,为了简单起见,本文档假设您正在从 IntelliJ IDEA 构建和运行项目。这是最常见的情况,与更先进的技术相比,它的限制更少。连接到进程和调试远程应用程序的过程将在单独的部分中介绍。
调试前
确保“设置”| “生成调试信息”选项已打开(默认设置)。构建、执行、部署 | 编译器| Java 编译器。
调试并不是绝对需要此设置,但是,我们建议将其保留为启用状态。禁用它可以节省磁盘空间,但会牺牲一些调试器功能。
在“设置”|“设置”中配置常见调试属性和行为 构建、执行、部署 | 调试器。
如果您是调试新手,开箱即用的配置将适合您。有关每个调试器功能的主题提供参考并解释适用的相关设置。如果您是高级用户并正在寻找某些特定属性,请参阅调试器参考部分。
如果您要使用自定义配置,请定义运行/调试配置。如果您需要将一些参数传递给程序或在启动之前执行一些特殊活动,则这是必需的。有关设置运行/调试配置的更多信息,请参阅运行/调试配置部分。大多数时候,您不需要它来调试不需要参数或有任何特殊要求的简单程序。
一般调试流程
没有一种放之四海而皆准的程序来调试应用程序。根据实际需求,您可能需要以不同的顺序使用不同的操作。本主题提供一般准则,代表典型的调试步骤。各个主题中提供了有关如何以及何时使用特定功能的详细信息。
定义程序需要停止的位置。这是使用断点来完成的。断点是特殊标记,代表调试器需要介入并冻结程序状态的位置和条件。已被调试器冻结的程序称为挂起。
使用断点的替代方法是在任意时刻手动挂起程序,但是此方法对调试器功能施加了一些限制,并且无法精确地确定何时挂起程序。
就像程序的常规运行一样,您可以同时运行多个调试会话。
程序挂起后,使用调试器获取有关程序状态及其在运行过程中如何变化的信息。
调试器为您提供有关变量值、线程的当前状态、堆中当前对象的细分等信息。它还允许您通过抛出异常(例如,检查异常的处理方式)或在程序执行过程中运行任意代码来测试各种条件下的程序。
虽然这些工具可以让您检查特定时刻的程序状态,但步进功能可以让您控制程序的逐步执行。通过组合这些工具,您可以推断错误的来源并测试程序的稳健性。
当您确定需要修复的内容后,您可以在不终止会话的情况下进行修复。为此,IntelliJ IDEA 提供了一项功能,允许您动态调整和重新加载代码片段。重新加载修改的类主题中介绍了此方法。
笔记
如果您是调试新手,我们建议您完成调试您的第一个 Java 应用程序教程。
调试器复习
如果您已经熟悉 IntelliJ IDEA 调试器并希望概述各种有用的功能和方法,请观看调试器复习视频系列。
调试器要点涵盖了行断点、单步执行、控制调试会话、监视、表达式求值和断点条件等基本主题。
高级调试器涵盖断点类型和设置、高级单步调试、远程调试、渲染器等。
Debugger Professional 涵盖了高级主题,例如使用 HotSwap、调试标签、异步堆栈跟踪和调试反编译代码。
感谢您的反馈意见!