使用 Cloud Debugger

Cloud Debugger 可以捕获和检查在各种云平台(如 App EngineCompute EngineGKECloud Run)上运行的活跃应用的调用堆栈和本地变量,而无需停止应用或减慢其运行速度。

它的工作原理与 IDE 的标准调试器非常相似且提供的界面也相同,但二者之间存在以下两个主要区别:

  • Debugger 不会暂停执行正在运行的应用。
  • 您无法在 Debugger 中逐步执行应用。

如需详细了解 Debugger 支持的平台,请参阅此指南

要求

如需运行 Debugger,您需要以下各项:

使用 Debugger

如需使用 Debugger,请执行以下操作:

  1. 在 IntelliJ 中打开您的项目。
  2. 选择 Run > Edit Configurations
  3. 点击左上角的加号图标 (+),然后从下拉列表中选择 Cloud Debugger
  4. Name 字段中输入配置的名称。
  5. 确保在项目字段中选中您的项目。
  6. 点击确定
  7. 点击工具栏中的绿色错误“调试”图标以启动调试程序。
  8. 附加到应用 (Attach to an Application) 对话框中,选择要调试的后端模块,然后点击附加

设置快照位置

快照可捕获源代码中指定位置的局部变量和调用堆栈。此快照位置适用于所有正在运行的应用实例。

如需设置快照位置,请执行以下操作:

  1. 将 Debugger 附加到正在运行的应用后,导航到包含要监控的源代码的文件。
  2. 点击要在左侧间距区域中截取快照的可执行行,操作方式与使用常规 IDEA 调试器为本地应用设置行断点时一样。

    间距中会出现蓝色圆圈以标记快照位置,“Debugger Snapshots”窗格会显示待处理的快照。

  3. 点击蓝色圆圈以移除快照位置。

在以下示例中,快照位置在 if (userAgent != null) { 行上设置。

设置快照位置

获取快照

当任意实例首次在您设置的快照位置执行代码时,调试程序会截取快照并提供查看选项。然后,您可以检查此快照并使用数据调试应用。

在“Debugger Snapshots”窗格中,此快照上的标签从 Pending 更改为 Debugger 捕获该快照的时间。

查看堆栈轨迹

高级概念

设置快照条件

快照条件是一个布尔表达式,用于告知调试器仅在计算结果为 true 时才截取快照,例如 x !=0。该条件是一个完整的布尔表达式,可以包含逻辑和数字运算符,例如 score < 0 || score > 500

监视表达式

有时,调试问题所需的信息不会立即在应用的本地变量和字段中显现出来。特别是,在 App Engine 上运行应用时,Security Manager 会阻止您过于深入地探究系统类的私有成员,例如 java.util.Hashmap。在这种情况下,监视表达式可作为有效的临时本地变量来公开其他信息。监视表达式可以在截取快照时评估复杂表达式并遍历对象层次结构。

您可以在设置快照位置后指定监视表达式。 监视表达式支持与上述快照条件相同的语言功能。

获取支持

如需发送反馈,请在 GitHub 上报告问题,或者在 Stack Overflow 上提问。