Cloud Code を使用すると、Cloud Run に似た環境で Cloud Run サービスをローカルにデバッグできます。ブレークポイントの設定、コードのステップ実行、コンテナ内で実行されているリモート サービスのデバッグを行うことができます。
Cloud Code を使用すると、ソースコードを変更して反復処理しながらアプリケーションをデバッグすることもできます。
デバッグ構成の定義
サービスをデバッグする前に、デバッグ構成を作成する必要があります。
- ナビゲーション バーの [Run/Debug configurations] セレクタに移動して、[構成を編集] をクリックします。
- [Cloud Code: Cloud Run] で [Cloud Run: Run Locally] を選択します。
- [OK] をクリックします。
サービスのデバッグ
サービスをデバッグするには、次の手順に沿って操作します。
[Cloud Run: Run Locally] の [Debug] をクリックして、デバッグモードで開発サイクルを開始します。
Cloud Code はデバッグ セッションをアタッチします。成功すると、デバッグツール ウィンドウが開き、[コンソール] タブ内で接続が確認されます。
ブレークポイントを追加するコードの実行可能行の左横(gutter)をクリックします。
赤い塗りつぶしの円はアクティブなブレークポイントを示し、赤で囲まれた白抜きの円は無効なブレークポイントを示します。
実行中のサービスにアクセスするには、[Event Log] パネルに表示されている URL をクリックします。
URL をクリックすると、新しいリクエストがサービスに送信され、ブレークポイントが設定された行で一時停止します。
デバッグ セッションを終了するには、[Cloud Run: Run Locally] の実行構成の停止アイコンをクリックします。
サポートされている IDE
次の表に、Cloud Code がデバッグでサポートする言語と IDE を示します。また、必要なプラグインも示しています(該当する場合)。
言語 | サポートされている IDE とエディション | 必要なプラグイン |
---|---|---|
Java | IntelliJ IDEA Ultimate | 該当なし |
IntelliJ IDEA Community | 該当なし | |
Go | IntelliJ IDEA Ultimate | Go プラグイン |
GoLand | 該当なし | |
Node.js | IntelliJ IDEA Ultimate | Node.js プラグイン |
WebStorm | 該当なし | |
Python | IntelliJ IDEA Ultimate | Python プラグイン |
PyCharm Professional | 該当なし |
IDE のサポートの詳細については、サポートされている JetBrains IDE をご覧ください。
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 ランタイム環境変数(GODEBUG
、GOGC
、GOMAXPROCS
、GOTRACEBACK
など)のいずれかが設定されて 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 のデバッグのドキュメントをご覧ください。