在 Cloud Code for VS Code 中调试 Cloud Run 服务

借助适用于 VS Code 的 Cloud Code,您可以轻松调试部署到 Cloud Run skaffold debug。如需详细了解 Skaffold 调试相关信息,请参阅 使用 Skaffold 进行调试

您无需手动设置,例如设置端口转发或 注入特定于语言的调试参数。进行调试需要 支持 Cloud Code 的 Cloud Run 应用 其中包含 skaffold.yaml 配置文件和 launch.json 文件 类型 cloudcode.cloudrun

调试 Cloud Run 服务

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

  1. 要运行您的服务并为其连接调试程序会话,请打开 命令面板(按 Ctrl/Cmd+Shift+P 或点击查看 > Command Palette) 然后运行 Debug on Cloud Run Emulator 命令。

  2. 在“在 Cloud Run 模拟器上运行/调试”(Run/Debug on Cloud Run Emulator) 对话框中,为您的配置设置规范:

    • 选择 Docker 或 Buildpack 作为构建器,然后指定您的 Dockerfile 或 Buildpack。
    • (可选)如需指定 Dockerfile 目标或构建参数,请执行以下操作: 点击 Show Advanced Build Settings,然后指定目标或 参数。
    • (可选)如需指定自定义服务名称、容器映像网址 容器端口、要使用的服务的身份、专用 CPU 数量 要分配给每个容器实例的内存量,请点击 显示高级服务设置,然后指定值。
    • (可选)要指定 环境变量 依次点击显示高级服务设置环境变量。 然后指定相应的值
    • (可选)如需指定 Cloud SQL 连接,请点击连接。 然后每行指定一个连接
    • (可选)要在保存 对代码进行更改后,请查看 自动重新构建并在有更改时重新运行复选框。

    如果您想进一步自定义服务运行方式,可以修改 您的 launch.json 文件

  3. 如需开始调试服务,请点击调试

  4. 如果出现提示,请对您的凭据进行身份验证,以运行和调试 应用

  5. 对于服务中的每个可调试容器,确认或输入您要调试的程序所在的远程容器目录。

    或者,您也可以按 ESC 跳过调试容器。

    远程根目录提示

    Cloud Code 会为服务中的每个可调试容器连接一个调试会话。

    默认情况下,当您保存对应用的更改时,Cloud Code 会重新部署应用并设置新的调试会话。您可以使用项目的启动配置中的 watch 标志切换此功能。

  6. 如需添加断点,请点击您要调试的文件的编辑器边距。

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

    如需更精确地控制断点,您可以使用 VS Code 的“Debug”视图中的“Breakpoints”部分。

    “Debug”视图左侧面板中的“Breakpoints”部分,支持添加、移除和停用断点

    当您向服务发送新请求时,服务会在您指定的行处暂停。

  7. 会话完成后,右键点击即可使用以下命令:

    • 查看日志:打开 使用 Cloud Code Logs Explorer 进行部署
    • 打开网址:打开特定应用服务的网址 服务
  8. 如果您在启动配置中关闭了手表模式,并且想要 对应用进行更改并重新构建并重新部署应用 点击 Cloud Code 状态栏,然后点击 开启手表模式

  9. 如果您要检查变量和堆栈信息,请使用调试边栏。如需与调试会话进行交互,请使用底部窗格调试器中的调试控制台

  10. 如需停止部署,请点击当前部署的操作栏中的停止按钮。

    Cloud Run 部署的操作栏

排查容器构建问题

如果您收到 BUILD_DOCKER_UNKNOWN 错误代码,则表示 使用容器要解决此问题,请执行以下一项或多项操作 任务:

  • 重启 Docker 并尝试再次构建容器。

  • 如果重启后仍然遇到相同的错误,则 Docker 可能 磁盘空间不足如需详细了解如何清理未使用的对象,请参阅 Docker,请参阅剪除未使用的 Docker 对象

  • 试试 Docker 的磁盘使用情况 可帮助回收空间

配置详情

Cloud Code 会处理以下特定于语言的配置 详细信息:

Node.js

重写要调用的入口点:

node --inspect=localhost:9229

Python

使用 Init 容器安装 ptvsd 模块并重写要调用的入口点:

python -m ptvsd --host localhost --port 5678

Go

使用 init 容器安装 dlv 调试程序并重写入口点,以便启动的调试会话仅使用调试服务器运行(在无头模式下),在启动时继续调试的进程,接受多个客户端连接,并侦听 localhost:56268

dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --

Java

使用适当的 Java 调试连接协议 (JDWP) 配置添加环境 JAVA_TOOLS_OPTIONS,以便 JDWP 调试代理在端口 5005 上侦听套接字连接,并允许虚拟机在连接调试程序之前开始执行:

jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y

.NET

.NET Core 应用配置为与适用于 VS 的 vsdbg 一起部署 代码。

如果您遇到自动配置方面的问题,请参阅 详细的调试程序配置和设置 ,获取问题排查方面的帮助。

获取支持

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