调试在本地运行的服务

借助 Cloud Code,您可以在类似 Cloud Run 的环境中,在本地调试 Cloud Run 服务。您可以设置断点,单步调试代码以及调试在容器中运行的远程服务。

定义调试配置

在调试服务之前,必须先创建调试配置:

  1. 转到导航栏中的“运行/调试配置”选择器,然后点击“修改配置”。
  2. 在“Cloud Code: Cloud Run”下选择“Cloud Run: Run Locally”。
  3. 点击“OK”。

调试服务

如需调试您的服务,请按以下步骤操作:

  1. 点击“Cloud Run: Run Locally'”的调试操作 调试操作图标,以在调试模式下启动开发周期。

    在调试模式下,在“Cloud Run: Run Locally”对话框上点击运行

  2. Cloud Code 将连接一个调试会话。成功连接后,系统会打开调试工具窗口,并确认连接(在“Console”标签页中)。

  3. 点击要向其中添加断点的可执行代码行的间距部分。

    红色实心圆表示活跃断点,而红色轮廓的空心圆表示已停用的断点。

  4. 要访问正在运行的服务,请点击“Event Log”面板中显示的网址。

    执行此操作后,系统会向您的服务发送新请求,并在标记了断点的行暂停。

    包含成功部署通知和服务预览网址的事件日志

  5. 如需结束调试会话,请点击“Cloud Run: Run Locally”运行配置上的停止图标。

配置详情

Skaffold 驱动的 Cloud Code 可帮助您配置调试会话。借助 Cloud Code,您可以针对以下语言设置断点并调试在容器中运行的远程应用:

Java

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

Node.js

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

您可以通过以下某种方式进行配置:

  • 手动配置

    从下拉菜单中选择 Cloud Run:在本地运行运行配置,然后点击修改配置。在调试标签页上,配置从本地应用来源到远程容器中的源位置的源代码映射。

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

    配置选项:

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

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

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

    配置选项:

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

Go

如需为您的应用配置调试,您的应用必须是基于 Go 模块的应用,并通过设置标准 Go 运行时环境环境变量(例如 GODEBUGGOGCGOMAXPROCSGOTRACEBACK)来判定基于 Go。GOTRACEBACK=single 是 Go 的默认设置,GOTRACEBACK=all 是常用配置。

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

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

获取支持

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