调试应用

Cloud Code for IntelliJ 可让您轻松调试已部署到 Kubernetes 集群的应用。您可以调试本地集群(如 Minikube 或 Docker Desktop)、GKE 或任何其他云服务商平台上的应用。

此外,借助 Cloud Code 的调试支持,您不必为各种手动步骤而费心,例如设置端口转发、安装调试后端或是以正确的方式注入特定语言的调试参数。您需要做的只是拥有一个支持 Cloud Code 且包含 skaffold.yaml 配置文件的 Kubernetes 应用。

调试

点击 Develop on Kubernetes 运行操作图标 的调试操作,在 Kubernetes 集群上以调试模式启动开发周期。

在调试模式下启动 Kubernetes 集群开发周期

持续开发周期随即将以调试模式启动。

在可以连接调试器之后,Cloud Code 就会连接调试会话:

连接 Kubernetes 调试器

此时,您可以执行在调试本地代码时通常会执行的所有任务,例如设置断点和单步执行代码,此外还享有调试实时 Kubernetes 集群的额外优势:

Kubernetes 调试器会话

如需结束调试会话,请点击 Develop on Kubernetes 运行配置上的停止图标。

配置详情

从本质上讲,由 Skaffold 提供技术支持的 Cloud Cod 可帮助您配置调试会话。借助 Cloud Code,您可以针对以下语言设置断点并调试在容器中运行的远程应用:

Java

Cloud Code 会自动添加具有相应 JDWP 配置的环境变量 JAVA_TOOL_OPTIONS 以启用调试。如果已存在,Cloud Code 将使用 JAVA_TOOL_OPTIONS 中指定的现有设置。

Node.js

根据应用结构及其映像构建配置,您可能需要帮助调试程序将本地源映射到容器中的远程源。这样,节点调试程序就能正确处理断点。

配置方法有两种:

  1. 手动配置

    从下拉菜单中选择“在 Kubernetes 上开发”运行配置,然后选择“修改配置”。在“调试”标签页中,配置从本地应用源到远程容器中源位置的源映射。

    在“调试”标签页的源映射部分中选择源位置

    配置选项:

    • 文件/目录 - 在 Kubernetes 中运行的应用的本地文件或目录。
    • 远程路径 - 在 Kubernetes 容器中运行的文件或目录的路径。
  2. 自动配置

    您可以选择推迟到 Cloud Code 的映射。当您启动调试会话时,Cloud Code 将尝试自动推断出此映射。它将以对话框的形式呈现;每个要调试的工件一个对话框。

    每个工件的远程路径映射对话框,指定正在使用的远程路径

    配置选项:

    • 本地路径 - 要调试的工件的根目录本地路径。
    • 远程路径 - 在 Kubernetes 容器中运行的文件或目录的路径。您可以选择将其替换为自己的值。如果点击 Cancel,则不会应用映射。

Go

要配置应用进行调试,您的应用必须:

  • 是基于 Go 模块的应用。
  • 通过在容器中设置其中一个标准 Go 运行时环境变量(例如 GODEBUGGOGCGOMAXPROCSGOTRACEBACK)来判定基于 Go。GOTRACEBACK=single 是 Go 的默认设置,GOTRACEBACK=all 是常用配置。

(可选,但不建议)您的应用应使用 -gcflags='all=-N -l' 选项进行构建,以停用优化。Skaffold 配置文件是用于此目的的实用选项,您可以在“构建/部署”标签页下,使用“运行”配置中的“部署配置文件”字段进行设置。

如需了解详情,请参阅 Skaffold 调试文档

获取支持

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