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

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

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

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

调试 Cloud Run 服务

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

  1. 如需运行您的服务并将调试程序会话连接到该服务,请打开命令调色板(按 Ctrl/Cmd+Shift+P 或点击 View > 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. 对于服务中的每个可调试容器,确认或输入您要调试的程序所在的远程容器目录。

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

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

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

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

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

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

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

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

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

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

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

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