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

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

デバッグ構成の定義

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

  1. ナビゲーション バーの [Run/Debug 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] の実行構成の停止アイコンをクリックします。

サポートされている IDE

サポートされている IDE、エディション、プラグインについては、次の表をご覧ください。

言語 IDE エディション 必要なプラグイン
Java IntelliJ IDEA コミュニティまたは Ultimate 該当なし
Go IntelliJ IDEA Ultimate Go プラグイン
GoLand 該当なし 該当なし
Node.js IntelliJ IDEA Ultimate Node.js プラグイン
WebStorm 該当なし 該当なし
Python IntelliJ IDEA Ultimate Python プラグイン
PyCharm Professional 該当なし

Cloud Code を使用すると、次の言語のコンテナで実行されるリモート アプリケーションのブレークポイントの設定やデバッグを行うことができます。

Java

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

Node.js

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

これは、次のいずれかの方法で構成できます。

  • 手動設定

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

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

    設定オプション

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

    このマッピングを 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 プロファイルはこの目的で使用する便利なオプションであり、[Build/Deploy] タブの [Run] 構成の [Deployment Profile] フィールドで設定できます。

Python

デバッグ用にアプリケーションを構成するには、次の前提条件を満たす必要があります。

  • IDE、エディション、プラグインとの互換性がある

    互換性のある IDE、エディション、プラグインについては、サポートされる IDE をご覧ください。

  • Skaffold のバージョンが 1.25.0 以上

    Cloud Code で、依存関係を管理するか、ローカルの Skaffold インストールを指すように指定できます。[Preferences] > [Tools] > [Cloud Code] > [Dependencies] をご覧ください。

  • Python インタープリタが構成されている

    プロジェクトで Python インタープリタを構成していない場合、基盤となる Python デバッガである pydevd を実行することができないため、デバッグは機能しません。

    IDE 構成方法
    IntelliJ IDEA Cloud Code を使用した Python のデバッグでは、プロジェクト用に Python SDK を構成する必要があります。

    [File] > [Project Structure] に移動し、[Project] タブで Python SDK を追加します。存在しない場合は、[SDK] タブで追加します。
    PyCharm [File] > [Settings] > [Project] > [Python Interpreter] に移動するか、Mac OS X の場合は [PyCharm] > [Preferences] > [Project] > [Python Interpreter] に移動して、Python インタープリタを追加します。

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

サポートの利用

IntelliJ IDE でフィードバックを送信するか、問題を報告するには、[Tools] > [Cloud Code] > [Help / About] > [Submit feedback or report an issue] を選択します。ここから、GitHub で問題を報告したり、Stack Overflow で質問したりできます。

また、Google Cloud Slack コミュニティの 1 つである、#cloud-code チャンネルにも参加できます。