Cloud Debugger 可以捕获和检查在各种云平台(如 App Engine、Compute Engine、GKE 和 Cloud Run)上运行的活跃应用的调用堆栈和本地变量,而无需停止应用或减慢其运行速度。
它的工作原理与 IDE 的标准调试器非常相似且提供的界面也相同,但二者之间存在以下两个主要区别:
- Debugger 不会暂停执行正在运行的应用。
- 您无法在 Debugger 中逐步执行应用。
如需详细了解 Debugger 支持的平台,请参阅此指南。
要求
如需运行 Debugger,您需要以下各项:
- Cloud Code。
- Java 7 或 8。
- Git。
- 可以部署 App Engine 应用的 Google 帐号。
使用 Debugger
如需使用 Debugger,请执行以下操作:
- 在 IntelliJ 中打开您的项目。
- 选择 Run > Edit Configurations。
- 点击左上角的加号图标 (+),然后从下拉列表中选择 Cloud Debugger。
- 在 Name 字段中输入配置的名称。
- 确保在项目字段中选中您的项目。
- 点击确定。
- 点击工具栏中的绿色错误“调试”图标以启动调试程序。
- 在附加到应用 (Attach to an Application) 对话框中,选择要调试的后端模块,然后点击附加。
设置快照位置
快照可捕获源代码中指定位置的局部变量和调用堆栈。此快照位置适用于所有正在运行的应用实例。
如需设置快照位置,请执行以下操作:
- 将 Debugger 附加到正在运行的应用后,导航到包含要监控的源代码的文件。
- 点击要在左侧间距区域中截取快照的可执行行,操作方式与使用常规 IDEA 调试器为本地应用设置行断点时一样。
间距中会出现蓝色圆圈以标记快照位置,“Debugger Snapshots”窗格会显示待处理的快照。
- 点击蓝色圆圈以移除快照位置。
在以下示例中,快照位置在 if (userAgent != null) {
行上设置。

获取快照
当任意实例首次在您设置的快照位置执行代码时,调试程序会截取快照并提供查看选项。然后,您可以检查此快照并使用数据调试应用。
在“Debugger Snapshots”窗格中,此快照上的标签从 Pending 更改为 Debugger 捕获该快照的时间。

高级概念
设置快照条件
快照条件是一个布尔表达式,用于告知调试器仅在计算结果为 true 时才截取快照,例如 x !=0
。该条件是一个完整的布尔表达式,可以包含逻辑和数字运算符,例如 score < 0 || score > 500
。
监视表达式
有时,调试问题所需的信息不会立即在应用的本地变量和字段中显现出来。特别是,在 App Engine 上运行应用时,Security Manager 会阻止您过于深入地探究系统类的私有成员,例如 java.util.Hashmap
。在这种情况下,监视表达式可作为有效的临时本地变量来公开其他信息。监视表达式可以在截取快照时评估复杂表达式并遍历对象层次结构。
您可以在设置快照位置后指定监视表达式。 监视表达式支持与上述快照条件相同的语言功能。