設定 Go 適用的 Stackdriver Debugger

本頁面說明如何設定環境和 Go 應用程式,以使用 Stackdriver Debugger。對於某些環境,您必須明確指定讓 Stackdriver Debugger 代理程式傳送資料的存取權範圍。我們建議您儘可能設定最大的存取權範圍,然後使用 Cloud Identity and Access Management 限制存取權。為了與此最佳做法保持一致,請使用 cloud-platform 選項將存取權範圍設定為所有 Cloud API。

App Engine 標準環境

App Engine 標準環境尚未支援 Go 適用的 Stackdriver Debugger 代理程式。

App Engine 彈性環境

App Engine 彈性環境尚未支援 Go 適用的 Stackdriver Debugger 代理程式。

Google Kubernetes Engine

  1. 建立具有下列其中一種存取權範圍的叢集:
    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger

    如要使用 gcloud 建立叢集,請執行下列操作:

    1. (選用) 將 gcloud 更新到最新版本:
      gcloud components update
    2. 設定預設的專案 ID
      gcloud config set project [PROJECT_ID]
    3. 如果您使用區域叢集,請設定預設的運算區域
      gcloud config set compute/zone [COMPUTE_ZONE]
    4. 如果您使用地區叢集,請設定預設的運算地區
      gcloud config set compute/region [COMPUTE_REGION]
    5. 發出 create 指令:
      gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform

    如需建立叢集的詳細資訊,請參閱建立叢集一文。

  2. 依照 Compute Engine 的指示操作。

Compute Engine

  1. 確認 Compute Engine VM 執行個體正在執行 64 位元 Debian Linux 映像檔:

  2. 確認 Compute Engine VM 執行個體已使用 [允許所有 Cloud API 的完整存取權] 存取權範圍選項建立,或是具有下列其中一個存取權範圍:

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. 目前 Go 編譯器的最佳化功能會影響偵錯的準確度。因此,當您使用預設的 Go 編譯器最佳化功能建構應用程式時,Stackdriver Debugger 會顯示不正確的應用程式資訊。

    為取得正確的偵錯資訊,請不要以預設的最佳化功能建構您的應用程式。下列範例指令示範如何在使用 go1.10 或更高版本時停用最佳化功能:

    go build -gcflags=all='-N -l'
    

    在上述範例中,gcflags 值包含了停用最佳化功能的 -N,以及停用內嵌功能的 -l

  4. 下載偵錯工具代理程式。

    Stackdriver Debugger 代理程式是一個輕量的二進位工具,可在應用程式啟動時啟用。這個代理程式會與應用程式一同啟動,並在應用程式執行期間與 Stackdriver Debugger 後端進行通訊。

    在您建構並部署好 Compute Engine 應用程式後,請下載並安裝偵錯代理程式:

    go get -u cloud.google.com/go/cmd/go-cloud-debug-agent
    
  5. 啟動代理程式和您的程式:

    go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \
                     -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
    

    其中:

    • PATH_TO_FILE 是包含原始碼內容設定的 JSON 檔案的相對路徑。如需有關產生此檔案的資訊,請參閱自動選取原始碼

    • APP_NAME 是應用程式或服務的名稱。您可以在 GCP 主控台中使用此名稱和版本來識別您的應用程式。

    • APP_VERSION 是應用程式提供的版本標記。例如,您可以使用版本號碼。GCP 主控台會以 module - version 的形式顯示正在執行中的版本。例如,main - 1.0

    • PATH_TO_BINARY 是應用程式二進位檔的相對路徑。

    • ARG1ARG2 是應用程式需要的任何其他引數的預留位置。

    例如:

    go-cloud-debug-agent -appmodule=main -appversion=1.0 -- bin/my-app my-arg
    

偵錯工具現在已準備好與您的應用程式搭配使用。

如要讓 GCP 主控台中的「偵錯」頁面自動顯示與已部署應用程式相符的原始碼檔案,請參閱自動選取原始碼

本機和其他位置

Go 適用的 Stackdriver Debugger 代理程式只有在 Kubernetes Engine 和 Compute Engine 環境中受到支援。本機或其他環境皆不提供支援。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Stackdriver Debugger 說明文件