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

Cloud Code for VS Code 可让您利用 skaffold debug 轻松调试部署到 Cloud Run 的应用。如需详细了解 Skaffold 调试,请参阅使用 Skaffold 进行调试

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

调试 Cloud Run 服务

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

  1. 如需运行您的服务并为其附加调试程序会话,请打开命令面板(按 Ctrl/Cmd+Shift+P 或点击视图 > 命令面板),然后运行 Debug on Cloud Run Emulator 命令。

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

    • 选择 Docker 或 Buildpack 作为构建器,然后指定您的 Dockerfile 或 Buildpack。
    • (可选)如需指定 Dockerfile 目标或构建参数,请点击显示高级构建设置,然后指定一个或多个目标参数。
    • (可选)如需指定自定义服务名称、容器映像网址、容器端口、要使用的服务的身份、专用 CPU 数量或要分配给每个容器实例的内存量,请点击显示高级服务设置,然后指定值。
    • (可选)如需指定任何环境变量,请点击显示高级服务设置,点击环境变量,然后指定值。
    • (可选)如需指定 Cloud SQL 连接,请点击连接,然后每行指定一个连接。
    • (可选)如需在保存对代码所做的更改后让 VS Code 重新建立调试会话,请选中 Automatically re-build and re-run on changes(自动重新构建并在更改时重新运行)复选框。

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

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

  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 部署的操作栏

配置详情

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 Code 的 vsdbg 一起部署。

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

获取帮助

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