透過 Cloud Code for Cloud Shell,您可以使用 skaffold debug 輕鬆對部署至 Cloud Run 的應用程式進行偵錯。如要進一步瞭解如何使用 Skaffold 偵錯,請參閱「使用 Skaffold 偵錯」。
您不必完成手動設定,例如設定通訊埠轉送或插入特定語言偵錯引數。如要進行偵錯,您需要具備 Cloud Code 且包含 skaffold.yaml 設定檔和 launch.json 檔案 (類型為 cloudcode.cloudrun) 在內的 Cloud Run 應用程式。
對 Cloud Run 服務進行偵錯
如要偵錯服務,請按照下列步驟操作:
如要執行服務並附加偵錯工作階段,請開啟指令面板 (按下
Ctrl/Cmd+Shift+P鍵,或依序點選「View」(瀏覽) >「Command Palette」(指令面板)),然後執行「Debug on Cloud Run Emulator」(在 Cloud Run 模擬器上偵錯) 指令。在「Run/Debug on Cloud Run Emulator」(透過 Cloud Run 模擬器執行/偵錯) 對話方塊中,設定設定的規格:
- 選擇 Docker 或 Buildpacks 做為建構工具,然後指定 Dockerfile 或 Buildpack。
- (選用) 如要指定 Dockerfile 目標或建構引數,請按一下「顯示進階建構設定」,然後指定目標或引數。
- (選用) 如要指定自訂服務名稱、容器映像檔網址、容器通訊埠、服務要使用的身分、專屬 CPU 數量,或要分配給每個容器執行個體的記憶體量,請按一下「顯示進階服務設定」,然後指定值。
- (選用) 如要指定任何環境變數,請按一下「顯示進階服務設定」,然後按一下「環境變數」,接著指定值。
- (選用) 如要指定 Cloud SQL 連線,請按一下「連線」,然後每行指定一個連線。
如要進一步自訂服務的執行方式,可以直接編輯
launch.json檔案。如要開始偵錯服務,請按一下「Debug」。
針對服務中的每個可偵錯容器,確認或輸入遠端容器中的目錄,您想偵錯的程式就位於該目錄中。
或者,您也可以按
ESC略過容器偵錯。Cloud Code 會為服務中每個可偵錯的容器連結偵錯工作階段。
根據預設,當應用程式的變更內容自動儲存時,Cloud Code 會重新部署應用程式,並設定新的偵錯工作階段。您可以在專案的啟動設定中,使用
watch標記切換這項功能。如要新增中斷點,請在要偵錯的檔案編輯器邊界中按一下。
紅色實心圓圈代表有效中斷點,灰色空心圓圈代表已停用的中斷點。
傳送新要求到服務後,系統會暫停在您指定的行上。
工作階段完成後,請按一下滑鼠右鍵,使用下列指令:
- 查看記錄:使用 Cloud Code Logs Explorer,開啟特定 Deployment 的應用程式記錄
- 開啟網址:在網路瀏覽器中開啟特定服務的應用程式服務網址
如果您已在啟動設定中關閉監看模式,且想變更應用程式並重建及重新部署應用程式,請按一下 Cloud Code 狀態列,然後按一下「開啟監看模式」。
如要檢查變數和堆疊資訊,請使用偵錯側欄。 如要與偵錯工作階段互動,請使用底部窗格偵錯工具的「Debug Console」。
如要停止部署作業,請按一下目前部署作業動作列中的「停止」按鈕。

排解容器建構問題
如果收到 BUILD_DOCKER_UNKNOWN 錯誤代碼,表示 Docker 有問題。如要解決這個問題,請執行下列一或多項工作:
重新啟動 Docker,然後再次嘗試建構容器。
如果重新啟動後仍發生相同錯誤,可能是 Docker 磁碟空間不足。如要進一步瞭解如何清除 Docker 中未使用的物件,請參閱「修剪未使用的 Docker 物件」。
設定詳細資料
Cloud Code 會處理下列語言專屬的設定詳細資料:
Node.js
重新編寫進入點以叫用:
node --inspect=localhost:9229
Python
使用 Init Container 安裝 ptvsd 模組,並重新編寫進入點來叫用:
python -m ptvsd --host localhost --port 5678
Go
使用 Init Container 安裝 dlv 偵錯工具,並重新編寫進入點,讓啟動的偵錯工作階段只使用偵錯伺服器 (無周邊模式),繼續偵錯程序 (啟動時)、接受多個用戶端連線,並在 localhost:56268 監聽:
dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --
Java
新增環境 JAVA_TOOLS_OPTIONS,並使用適當的 Java 偵錯線路通訊協定 (JDWP) 設定,讓 JDWP 偵錯代理程式監聽通訊埠 5005 的 Socket 連線,並允許 VM 在附加偵錯工具前開始執行:
jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y
.NET
.NET Core 應用程式已設定為與 VS Code 的 vsdbg 一併部署。
如果自動設定發生問題,請參閱「詳細的偵錯工具設定和安裝」一文,瞭解如何排解問題。