Cloud Code for VS Code を使用すると、skaffold debug
を活用することで、Cloud Run にデプロイされたアプリケーションを簡単にデバッグできます。Skaffold のデバッグの詳細については、Skaffold を使用したデバッグをご覧ください。
ポート転送の設定や言語固有のデバッグ引数の挿入などを手動で設定する必要はありません。デバッグには、skaffold.yaml
構成ファイルと cloudcode.cloudrun
タイプの launch.json
ファイルを含む Cloud Code 対応の Cloud Run アプリケーションが必要です。
Cloud Run サービスをデバッグする
サービスをデバッグするには、次の手順に沿って操作します。
サービスを実行してデバッガ セッションをアタッチするには、コマンド パレットを開いて(
Ctrl
/Cmd
+Shift
+P
を押下するか、[表示] > [コマンド パレット] をクリック)、[Debug on Cloud Run Emulator] コマンドを実行します。Cloud Run エミュレータの実行 / デバッグ ダイアログで、構成の仕様を設定します。
- ビルダーとして Docker または Buildpacks を選択し、Dockerfile または Buildpack を指定します。
- (省略可)Dockerfile ターゲットまたはビルド引数を指定するには、[ビルドの詳細設定を表示] をクリックし、ターゲットまたは引数を指定します。
- (省略可)カスタム サービス名、コンテナ イメージの URL、コンテナポート、使用するサービスの ID、専用 CPU の数、または各コンテナ インスタンスに割り当てるメモリ容量を指定する場合は、サービスの詳細設定を表示し、値を指定します。
- (省略可)環境変数を指定するには、[サービスの詳細設定を表示]、[環境変数] の順にクリックしてから値を指定します。
- (省略可)Cloud SQL 接続を指定するには、[接続] をクリックして、1 行に 1 つの接続を指定します。
- (省略可)コードの変更を保存した後で VS Code でデバッグ セッションを再確立するには、[変更を自動的に再構築して再実行する] というチェックボックスをオンにします。
サービスの実行方法をさらにカスタマイズするには、
launch.json
ファイルを直接編集します。サービスのデバッグを開始するには、[Debug] をクリックします。
プロンプトが表示されたら、ローカルでアプリケーションを実行およびデバッグするための認証情報を認証します。
サービス内のデバッグ可能なコンテナごとに、デバッグするプログラムが存在するリモート コンテナのディレクトリを確認または入力します。
または、
ESC
キーを押すと、コンテナのデバッグをスキップできます。Cloud Code は、サービスのデバッグ可能なコンテナごとにデバッグ セッションをアタッチします。
デフォルトでは、アプリケーションへの変更を保存すると、Cloud Code はアプリケーションを再デプロイし、新しいデバッグ セッションを設定します。この機能を切り換えるには、プロジェクトの起動構成で
watch
フラグを指定します。ブレークポイントを追加するには、デバッグするファイルのエディタの余白をクリックします。
赤い塗りつぶしの円はアクティブなブレークポイントを示し、灰色で白抜きの円は無効なブレークポイントを示します。
ブレークポイントを細かく制御するには、VS Code のデバッグビューの [BREAKPOINTS] セクションを使用します。
サービスに新しいリクエストを送信すると、指定した行で一時停止します。
セッションが完了したら、右クリックして次のコマンドを使用します。
- ログの表示: Cloud Code ログ エクスプローラで特定のデプロイのアプリケーション ログを開きます。
- Open URL: 特定サービスのアプリケーション サービス URL をウェブブラウザで開きます。
起動構成でウォッチモードをオフにしていて、アプリケーションを変更し、アプリケーションの再ビルドと再デプロイを行う場合は、Cloud Code のステータスバーをクリックして、ウォッチモードをオンにするをクリックします。
変数とスタック情報を調べるには、デバッグ サイドバーを使用します。デバッグ セッションをインタラクティブに操作するには、下部ペインのデバッガにあるデバッグ コンソールを使用します。
デプロイを停止するには、現在のデプロイのアクションバーにある [停止] ボタンをクリックします。
コンテナのビルドに関する問題のトラブルシューティング
BUILD_DOCKER_UNKNOWN
エラーコードが表示された場合は、Docker に問題があることを示しています。この問題を解決するには、次のタスクを 1 つ以上実行します。
Docker を再起動し、コンテナを再度構築してみます。
起動後に引き続き同じエラーが発生する場合、Docker のディスク容量が不足している可能性があります。Docker で使用されていないオブジェクトのクリーンアップについては、使用されていない Docker オブジェクトをプルーニングする.
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
とともにデプロイされるよう構成されています。
自動構成で問題が発生した場合は、デバッガの詳細な構成と設定でトラブルシューティングの方法をご覧ください。