Cloud Code for IntelliJ で Cloud デバッガを使用する

Cloud デバッガを使用すると、アプリを停止したり、処理速度を下げたりすることなく、クラウドで実行されているライブ アプリケーションのコールスタックとローカル変数を収集して調査できます。デバッガは、App EngineCompute EngineGKECloud Run などの Google Cloud プロダクトに対応しています。

デバッガは IDE の標準デバッガと非常によく似ており、ユーザー インターフェースも同じです。主な違いは次のとおりです。

  • デバッガを使用しても、実行中のアプリケーションの実行は一時停止されません。
  • デバッガでは、アプリケーションをステップ実行できません。

デバッガが対応しているプラットフォームの詳細については、デバッガの設定をご覧ください。

要件

デバッガを実行するには、次のものが必要です。

デバッガの使用

デバッガを使用する手順は次のとおりです。

  1. IntelliJ 内でプロジェクトを開きます。
  2. [Run] > [Edit Configurations] をクリックします。
  3. 左上隅の [+ Add New Configuration] をクリックし、プルダウン リストから [Google Cloud Debugger] を選択します。
  4. [Name] フィールドに構成名を入力します。
  5. プロジェクトが [Project] フィールドで選択されていることを確認します。
  6. [OK] をクリックします。
  7. デバッガを起動するには、ツールバーの デバッグ アイコン [デバッグ] をクリックします。
  8. [Attach to an Application] ダイアログでデバッグするバックエンド モジュールを選択し、[Attach] をクリックします。

スナップショットの場所の設定

スナップショットは、ソースコード内の指定された場所にあるローカル変数とコールスタックを取得します。スナップショットの場所は、アプリケーションの実行中のすべてのインスタンスに適用されます。

スナップショットの場所を設定する手順は次のとおりです。

  1. 実行中のアプリケーションにデバッガを接続したら、監視するソースコードが含まれているファイルに移動します。
  2. 標準の IDEA デバッガを使用して、ローカル アプリケーションに行ブレークポイントを設定するときと同じように、左のガター領域でスナップショットをとる実行可能行をクリックします。
  3. 表示される [Set Breakpoint] ダイアログで、[Cloud Snapshot Location] を選択します。ガターにスナップショットの場所を示す青い円が表示され、デバッガのスナップショットのペインに保留中のスナップショットが表示されます。
  4. スナップショットの場所を無効にするには、青い円を右クリックして [Enabled] チェックボックスをオフにします。
  5. スナップショットの場所を削除するには、青い円をクリックします。
スナップショットの場所の設定

スナップショットの取得

いずれかのインスタンスが、設定したスナップショットの場所でコードを最初に実行したときに、デバッガはスナップショットを作成し、これを表示できるようにします。その後、スナップショットを調べて、そのデータを用いてアプリケーションをデバッグできます。

デバッガのスナップショットのペインのスナップショットのラベルが [保留中] からデバッガがスナップショットを取得した時刻に変わります。

高度なコンセプト

スナップショット条件の設定

スナップショット条件はブール型の式で、デバッガに対して、条件が true と評価される場合に限り、スナップショットをとるように通知します。たとえば、x !=0 などです。この条件は、論理演算子と数値演算子を含めることができる完全なブール式です。たとえば、score < 0 || score > 500 などです。

スナップショット条件を設定するには:

  1. ガターの Cloud スナップショットの場所(青い円)を右クリックします。
  2. [Condition] フィールドに、スナップショット条件を入力します。

Watch 式

問題をデバッグするために必要な情報が、アプリケーションのローカル変数やフィールドに直接表示されていない場合があります。特に App Engine で実行するときは、セキュリティ マネージャーが機能しているため、システムクラスのプライベート メンバー(たとえば java.util.Hashmap)をデベロッパーが深く調査することはできません。このような場合、watch 式は効果的な一時ローカル変数として機能し、追加情報を公開します。watch 式を使用すると、スナップショットの作成時に複雑な式の評価や、オブジェクト階層の走査ができます。

スナップショットの場所の設定後に watch 式を指定できます。watch 式は、スナップショット条件の設定セクションで説明されているスナップショット条件と同じ言語機能をサポートします。

サポートを受ける

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

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