# 调试代码

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com/zh-cn/help/idea/llms.txt).

IntelliJ IDEA 提供了一个 Java 代码调试器。 根据 [已安装/启用的插件](managing-plugins.html)，您也可以调试用其他语言编写的代码。

在  调试会话 中，您会启动带有调试器附加的程序。 调试器的目的是干扰程序执行，并向您提供后台发生情况的信息。 这有助于检测和修复程序中的错误。

> **Note:**
> 有多种方式可以运行调试会话，不过，为了简洁起见，本文档假定您正在从 IntelliJ IDEA 构建和运行您的项目。 这是最常见的情况，与更高级的技术相比，它的限制更少。 附加到进程并调试远程应用程序的过程包含在不同的部分。

Procedure: 调试之前

1. 确保   生成调试信息   选项已开启（默认设置）  `设置 | 构建、执行、部署 | 编译器 | Java 编译器` 。

此设置并非调试所必需，但我们建议保持启用状态。 禁用它可以节省磁盘空间，但会牺牲一些调试器功能。

2. 在  `设置 | 构建、执行、部署 | 调试器`  中配置常见的 [调试属性和行为](settings-debugger.html)。

> **Tip:**
> 如果您是调试新手，开箱即用的配置将适合您。 每个调试器功能主题提供参考，并在适用时解释相关设置。 如果您是高级用户并在寻找某些特定属性，请参阅 [Debugger](settings-debugger.html) 参考部分。

3. 如果您打算使用自定义的 [运行/调试配置](run-debug-configuration.html)，请定义一个。 如果需要将一些参数传递给程序或在启动前执行一些特殊活动，这是必须的。 有关设置运行/调试配置的更多信息，请参阅 [运行/调试配置](run-debug-configuration.html) 部分。 大多数情况下，您不需要这个来调试不期望参数或没有任何特殊要求的简单程序。

## 一般调试程序

没有适用于所有应用程序的万能调试程序。 根据实际需求，您可能需要以不同的顺序使用不同的操作。 此主题提供了一般指南，代表了典型的调试步骤。 有关如何及何时使用特定功能的详细信息已在相应主题中提供。

Procedure:

1. 定义程序需要停止的位置。 这是使用 [断点](using-breakpoints.html)完成的。  断点  是特殊标记，表示调试器需要介入并冻结程序状态的位置和条件。 由调试器冻结的程序称为  suspended 。

使用 [手动挂起](starting-the-debugger-session.html)程序替代断点的另一种方法，但是这种方法对调试器功能施加了一些限制，并且不能精确控制何时挂起程序。

2. [以调试模式运行您的程序](starting-the-debugger-session.html)。 这可能是一个常规应用程序、单元测试或任何其他可执行代码， 只要相应的运行配置支持调试即可。

与程序的常规运行类似，可以同时运行多个调试会话。

3. 程序暂停后，使用调试器来 [获取有关程序状态的信息](examining-suspended-program.html)以及它在运行过程中如何变化。

调试器为您提供有关变量值、线程当前状态、当前堆中对象分解等信息。 它还允许您通过抛出异常（例如，检查它们如何处理）或在程序执行过程中间运行任意代码，在各种条件下测试您的程序。

虽然这些工具让您可以在特定时刻检查程序状态，但 [stepping](stepping-through-the-program.html)功能为您提供了对程序逐步执行的控制。 通过结合这些工具，您可以推断出错误的来源，并测试程序的鲁棒性。

4. 当您确定需要修复的内容时，您可以在不断开会话的情况下进行修复。 为此，IntelliJ IDEA 提供了一个功能，使您可以实时调整并重新加载代码片段。 这种方法在 [重新加载修改的类](altering-the-program-s-execution-flow.html#reload_classes)主题中有介绍。

> **Note:**
> 如果您是调试新手，建议您完成 [调试您的第一个 Java 应用程序](debugging-your-first-java-application.html) 教程。

## 调试器刷新

如果您已经熟悉 IntelliJ IDEA 调试器并想了解各种有用的功能和方法，可以观看调试器复习视频系列。

调试器基础知识涵盖了诸如行断点、单步执行、控制调试会话、监视、表达式求值和断点条件等基本主题。

[Video](https://www.youtube.com/v/59RC8gVPlvk)

调试器高级篇涵盖断点类型和设置、高级单步执行、远程调试、渲染器等内容。

[Video](https://www.youtube.com/v/40Og3hTV--k)

Debugger Professional 涵盖了高级主题，例如使用 HotSwap、调试标签、异步堆栈跟踪和调试反编译代码。

[Video](https://www.youtube.com/v/JPR3w3Qtwzw)

