Cloud Code for Cloud Shell で Cloud Run サービスをデバッグする

Cloud Code for Cloud Shell を使用すると、skaffold debug を活用することで、Cloud Run にデプロイされたアプリケーションを簡単にデバッグできます。Skaffold のデバッグの詳細については、Skaffold を使用したデバッグをご覧ください。

ポート転送の設定や言語固有のデバッグ引数の挿入などを手動で設定する必要はありません。デバッグには、skaffold.yaml 構成ファイルと cloudcode.cloudrun タイプの launch.json ファイルを含む Cloud Code 対応の Cloud Run アプリケーションが必要です。

Cloud Run サービスをデバッグする

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

  1. サービスを実行してデバッガ セッションをアタッチするには、コマンド パレットを開いて(Ctrl/Cmd+Shift+P を押下するか、[表示] > [コマンド パレット] をクリック)、[Debug on Cloud Run Emulator] コマンドを実行します。

  2. Cloud Run エミュレータの実行 / デバッグ ダイアログで、構成の仕様を設定します。

    • ビルダーとして Docker または Buildpacks を選択し、Dockerfile または Buildpack を指定します。
    • (省略可)Dockerfile ターゲットまたはビルド引数を指定するには、[ビルドの詳細設定を表示] をクリックし、ターゲットまたは引数を指定します。
    • (省略可)カスタム サービス名、コンテナ イメージの URL、コンテナポート、使用するサービスの ID、専用 CPU の数、または各コンテナ インスタンスに割り当てるメモリ容量を指定する場合は、サービスの詳細設定を表示し、値を指定します。
    • (省略可)環境変数を指定するには、[サービスの詳細設定を表示]、[環境変数] の順にクリックしてから値を指定します。
    • (省略可)Cloud SQL 接続を指定するには、[接続] をクリックして、1 行に 1 つの接続を指定します。

    サービスの実行方法をさらにカスタマイズするには、launch.json ファイルを直接編集します。

  3. サービスのデバッグを開始するには、[Debug] をクリックします。

  4. サービス内のデバッグ可能なコンテナごとに、デバッグするプログラムが存在するリモート コンテナのディレクトリを確認または入力します。

    または、ESC キーを押すと、コンテナのデバッグをスキップできます。

    Cloud Code は、サービスのデバッグ可能なコンテナごとにデバッグ セッションをアタッチします。

    デフォルトでは、アプリケーションへの変更が自動保存されると、Cloud Code はアプリケーションを再デプロイして、新しいデバッグ セッションを設定します。この機能を切り換えるには、プロジェクトの起動構成で watch フラグを指定します。

  5. ブレークポイントを追加するには、デバッグするファイルのエディタの余白をクリックします。

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

    サービスに新しいリクエストを送信すると、指定した行で一時停止します。

  6. セッションが完了したら、右クリックして次のコマンドを使用します。

    • ログの表示: Cloud Code ログ エクスプローラで特定のデプロイのアプリケーション ログを開きます。
    • Open URL: 特定サービスのアプリケーション サービス URL をウェブブラウザで開きます。
  7. 起動構成でウォッチモードをオフにしていて、アプリケーションを変更し、アプリケーションの再ビルドと再デプロイを行う場合は、Cloud Code のステータスバーをクリックして、ウォッチモードをオンにするをクリックします。

  8. 変数とスタック情報を調べるには、デバッグ サイドバーを使用します。デバッグ セッションをインタラクティブに操作するには、下部ペインのデバッガにあるデバッグ コンソールを使用します。

  9. デプロイを停止するには、現在のデプロイのアクションバーにある [停止] ボタンをクリックします。

    Cloud Run のデプロイメントのアクションバー

コンテナのビルドに関する問題のトラブルシューティング

BUILD_DOCKER_UNKNOWN エラーコードが表示される場合は、Docker に問題があることを示しています。この問題を解決するには、次のいずれかまたは複数の作業を行います。

構成の詳細

Cloud Code は、次の言語に固有の構成詳細を処理します。

Node.js

呼び出すエントリポイントを書き換えます。

node --inspect=localhost:9229

Python

Init コンテナを使用して ptvsd モジュールをインストールし、呼び出すエントリ ポイントを書き換えます。

python -m ptvsd --host localhost --port 5678

Go

Init コンテナを使用して dlv デバッガをインストールし、エントリ ポイントを書き換えて、起動したデバッグ セッションがデバッグ サーバーのみで(ヘッドレス モードで)実行され、起動時のデバッグ プロセスを継続し、複数のクライアント接続を受け入れ、localhost:56268 でリッスンできるようにします。

dlv exec --headless --continue --accept-multiclient --listen=localhost:56268 --api-version=2, <app> --

Java

適切な Java Debug Wire Protocol(JDWP)構成を使用して環境 JAVA_TOOLS_OPTIONS を追加し、JDWP デバッグ エージェントがポート 5005 のソケット接続をリッスンすることで、デバッガがアタッチする前に VM の実行を開始できるようにします。

jdwp=transport=dt_socket,server=y,suspend=n,address=5005,quiet=y

.NET

.NET Core アプリケーションは、VS Code 用の vsdbg とともにデプロイされるよう構成されています。

自動構成で問題が発生した場合のトラブルシューティングについては、デバッガの詳細な構成と設定をご覧ください。