您可以利用 Cloud Shell 專用的 Cloud Code,透過 skaffold debug
輕鬆對部署至 Cloud Run 的應用程式進行偵錯。如要進一步瞭解 Skaffold 偵錯功能,請參閱「使用 Skaffold 偵錯」。
您不必完成手動設定,例如設定通訊埠轉送或插入特定語言偵錯引數。進行偵錯作業時,您需要具備 Cloud Code 就緒的 Cloud Run 應用程式,其中包含 skaffold.yaml
設定檔和 launch.json
檔案 (類型為 cloudcode.cloudrun
)。
對 Cloud Run 服務進行偵錯
如要對服務進行偵錯,請按照下列步驟操作:
如要執行服務並附加偵錯工具工作階段,請開啟指令面板 (按下
Ctrl
/Cmd
+Shift
+P
鍵,或依序點選「View」 >「Command Palette」),然後執行「Debug on Cloud Run Emulator」指令。在「Run/Debug on Cloud Run Emulator」對話方塊中,設定設定的規格:
- 選擇 Docker 或 Buildpacks 做為建構工具,然後指定 Dockerfile 或 Buildpack。
- (選用) 如要指定 Dockerfile 目標或建構引數,請按一下「Show Advanced Build Settings」,然後指定目標或引數。
- (選用) 如要指定自訂服務名稱、容器映像檔網址、容器通訊埠、服務要使用的身分、專用 CPU 數量,或要分配給每個容器執行個體的記憶體量,請按一下「Show Advanced Service Settings」(顯示進階服務設定),然後指定值。
- (選用) 如要指定任何環境變數,請依序按一下「Show Advanced Service Settings」和「Environment Variables」,然後指定值。
- (選用) 如要指定 Cloud SQL 連線,請按一下「連線」,然後在每行指定一個連線。
如要進一步自訂服務的執行方式,您可以直接編輯
launch.json
檔案。如要開始偵錯服務,請按一下「Debug」。
針對服務中的每個可偵錯容器,確認或輸入要偵錯的程式所在的遠端容器目錄。
或者,您也可以按下
ESC
略過容器偵錯。Cloud Code 會為服務中的每個可偵錯容器連結偵錯工作階段。
根據預設,當應用程式變更內容自動儲存時,Cloud Code 會重新部署應用程式,並設定新的偵錯工作階段。您可以在專案的啟動設定中使用
watch
標記切換這項功能。如要新增中斷點,請在要偵錯的檔案中點選編輯器邊界。
紅色實心圓代表有效中斷點,灰色空心圓代表已停用的中斷點。
傳送新要求到服務後,系統會暫停在您指定的程式碼行。
工作階段結束後,請按一下滑鼠右鍵,使用下列指令:
- 查看記錄:使用 Cloud Code 記錄檔探索工具開啟特定部署作業的應用程式記錄
- 開啟網址:在網路瀏覽器中開啟特定服務的應用程式服務網址
如果您已在啟動設定中關閉監控模式,但想要變更應用程式並重新建構及重新部署應用程式,請按一下 Cloud Code 狀態列,然後點選「Turn on watch mode」。
如果要檢查變數和堆疊資訊,請使用偵錯側欄。如要與偵錯工作階段互動,請使用底部窗格偵錯工具的「Debug Console」。
如要停止部署作業,請按一下目前部署作業的操作列中的「停止」按鈕。
排解容器建構問題
如果您收到 BUILD_DOCKER_UNKNOWN
錯誤代碼,表示 Docker 有問題。如要解決這個問題,請執行下列一或多項工作:
重新啟動 Docker,然後再次嘗試建構容器。
如果重新啟動後仍收到相同錯誤,表示 Docker 可能已耗盡磁碟空間。如要進一步瞭解如何清理 Docker 中未使用的物件,請參閱「修剪未使用的 Docker 物件」一文。
試試 Docker 的 磁碟用量擴充功能,以便釋出空間。
設定詳細資料
Cloud Code 會處理下列語言專屬的設定詳細資料:
Node.js
改寫要叫用的進入點:
node --inspect=localhost:9229
Python
使用初始化容器安裝 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 Debug Wire Protocol (JDWP) 設定新增環境 JAVA_TOOLS_OPTIONS
,讓 JDWP 偵錯代理程式監聽 5005 連接埠上的通訊 socket 連線,並在偵錯工具附加之前,讓 VM 開始執行:
jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y
.NET
.NET Core 應用程式會設定為與 VS Code 的 vsdbg
一起部署。
如果自動設定發生問題,請參閱「詳細偵錯工具設定和設定」一文,瞭解如何排解問題。