ローカルで実行されているサービスのデバッグ

Cloud Code を使用すると、Cloud Run に似た環境で Cloud Run サービスをローカルにデバッグできます。ブレークポイントの設定、コードのステップ実行、コンテナ内で実行されているリモート サービスのデバッグを行うことができます。

デバッグ構成の定義

サービスをデバッグする前に、デバッグ構成を作成する必要があります。

  1. 上部のタスクバーの [Run/Debug configurations] ダイアログに移動し、[Edit Configurations] をクリックします。
  2. [Cloud Code: Cloud Run] で [Cloud Run: Run Locally] を選択します。
  3. [OK] をクリックします。

サービスのデバッグ

サービスをデバッグするには、次の手順に沿って操作します。

  1. [Cloud Run: Run Locally] のデバッグ アクション デバッグ アクション アイコン をクリックして、デバッグモードで開発サイクルを開始します。

    デバッグモードで [Cloud Run: Run Locally] の [実行] をクリック

  2. Cloud Code はデバッグ セッションをアタッチします。成功すると、デバッグツール ウィンドウが開き、[コンソール] タブ内で接続が確認されます。

  3. ブレークポイントを追加するコードの実行可能行の左横(gutter)をクリックします。

    赤い塗りつぶしの円はアクティブなブレークポイントを示し、赤で囲まれた白抜きの円は無効なブレークポイントを示します。

  4. 実行中のサービスにアクセスするには、[Event Log] パネルに表示されている URL をクリックします。

    URL をクリックすると、新しいリクエストがサービスに送信され、ブレークポイントが設定された行で一時停止します。

    デプロイの正常終了の通知とサービス プレビューの URL を含むイベントログ

  5. デバッグ セッションを終了するには、[Cloud Run: Run Locally] の実行構成の停止アイコンをクリックします。

構成の詳細

Skaffold を内蔵した Cloud Code は、デバッグ セッションの構成に役立ちます。Cloud Code を使用すると、次の言語のコンテナで実行されるリモート アプリケーションのブレークポイントの設定やデバッグを行うことができます。

Java

Cloud Code では、デバッグを有効にするために、適切な JDWP 構成とともに環境変数 JAVA_TOOL_OPTIONS が自動的に追加されます。環境変数がすでに存在する場合、Cloud Code は JAVA_TOOL_OPTIONS で指定された既存の設定を使用します。

Node.js

アプリケーションの構造とイメージビルド構成によっては、デバッガがローカルソースをコンテナ内のリモートソースにマッピングできるようにしなければならない場合もあります。これにより、Node デバッガがブレークポイントを正しく処理できるようになります。

これを設定する方法は次の 2 つです。

  1. 手動設定

    プルダウンから [Cloud Run: Run Locally] 実行構成を選択し、[Edit Configurations] を選択します。[デバッグ] タブで、ローカル アプリケーション ソースからリモート コンテナのソースの場所へのソース マッピングを構成します。

    [デバッグ] タブのソース マッピング セクションでソースの場所を選択する

    設定オプション

    • File/Directory - Cloud Run で実行されるアプリケーションのローカル ファイルまたはディレクトリ。
    • Remote Path - Cloud Run のコンテナ内で実行されるファイルまたはディレクトリへのパス。
  2. 自動設定

    このマッピングを Cloud Code に任せることもできます。デバッグ セッションを開始すると、Cloud Code はこのマッピングを自動的に推定しようとします。マッピングは、デバッグするアーティファクトごとに 1 つ作成されるダイアログに表示されます。

    使用されるリモートパスを指定する各アーティファクトのダイアログをマッピングするリモートパス

    設定オプション

    • Local path - デバッグしているアーティファクトのルートへのローカルパス。
    • Remote Path - Cloud Run のコンテナ内で実行されるファイルまたはディレクトリへのパス。 この値は、独自の値でオーバーライドできます。Cancel を押すと、マッピングは適用されません。

Go

デバッグ用にアプリを構成するには、アプリが次の条件を満たしている必要があります。

  • Go モジュール ベースのアプリケーション。
  • コンテナで標準の Go ランタイム環境の環境変数GODEBUGGOGCGOMAXPROCSGOTRACEBACK など)のいずれかを設定することで、Go ベースであることを示します。GOTRACEBACK=single は Go のデフォルト設定で、GOTRACEBACK=all は一般的に有用な構成です。

必要に応じて、-gcflags='all=-N -l' オプションを指定してアプリをビルドし、最適化を無効にすることをおすすめします。Skaffold プロファイルはこの目的で使用する便利なオプションであり、[Run/Deploy] タブの [Run] 構成の [Deployment Profile] フィールドで設定できます。

詳細については、Skaffold のデバッグのドキュメントをご覧ください。

サポートの利用

フィードバックを送信するには、GitHub で問題を報告します。または、Stack Overflow で質問します。