設定 Go 適用的 Stackdriver Debugger

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

事前準備

如要開始使用 Debugger,請務必先啟用 Debugger API。
啟用 Debugger API

App Engine 標準環境

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

App Engine 彈性環境

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

Google Kubernetes Engine

GCLOUD

如要使用 gcloud 來啟用 Debugger,請完成下列步驟:

  1. 建立具有下列其中一種存取權範圍的叢集:

    • https://www.googleapis.com/auth/cloud-platform 會授予叢集所有 Google Cloud API 的存取權。

    • https://www.googleapis.com/auth/cloud_debugger 只會授予叢集 Debugger API 的存取權。請使用這個存取權範圍強化叢集的安全防護

    gcloud container clusters create example-cluster-name \
           --scopes=https://www.googleapis.com/auth/cloud_debugger
    
  2. 將以下幾行加到 Dockerfile 中,即可將 Debugger 代理程式新增至您的容器化應用程式中:

    RUN go get -u cloud.google.com/go/cmd/go-cloud-debug-agent \
        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 是應用程式或服務的名稱。這個名稱加上版本可用來在 Cloud Console 中識別該應用程式。

    • APP_VERSION 是應用程式提供的版本標記。例如,您可以使用版本編號。Cloud Console 會將執行中的版本顯示為 module - version。例如:main - 1.0

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

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

現在偵錯工具已經準備就緒,可讓您在部署容器化應用程式時使用。

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

主控台

如要透過主控台啟用 Debugger,請完成下列步驟:

  1. 選取叢集類型後,請按一下 [Node pools] (節點集區) 窗格中的 [More options] (更多選項):

    「Node pools」(節點集區) 欄位,顯示用紅色長方形框住的 [More options] (更多選項) 按鈕。

  2. 從「Security」(安全性) 窗格中選取下列其中一個選項:

    • Allow full access to all Cloud APIs (允許所有 Cloud API 的完整存取權)。

    • Allow access for each API (針對個別 API 授予存取權),然後針對 Cloud Debugger 選取 [Enabled] (已啟用)。

Compute Engine

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

  2. 確認 Compute Engine VM 執行個體是使用「Allow full access to all Cloud APIs」(允許所有 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 是應用程式或服務的名稱。這個名稱加上版本可用來在 Cloud Console 中識別該應用程式。

    • APP_VERSION 是應用程式提供的版本標記。例如,您可以使用版本編號。Cloud Console 會將執行中的版本顯示為 module - version。例如:main - 1.0

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

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

    例如:

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

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

本機和其他位置

使用 Go 1.9 及更早版本的本機或其他環境支援 Go 適用的 Stackdriver Debugger 代理程式。

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

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

這個網頁
Stackdriver Debugger 說明文件