Stackdriver Debugger の使用

Stackdriver Debugger はクラウド(App EngineCompute Engine など)内で実行されるライブ アプリケーションのコールスタックとローカル変数をキャプチャして調査します。このとき、アプリが停止したり、実行速度が低下したりすることはありません。

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

  • Stackdriver Debugger では実行中のアプリケーションの一時停止がありません。
  • Stackdriver Debugger ではアプリケーションのステップスルーができません。

App Engine では、Stackdriver Debugger は Java と Kotlin アプリケーションでのみ動作し、自動的に有効になります。Compute Engine では、ブートストラップ スクリプトを実行して有効にする必要があります。

要件

Stackdriver Debugger を実行するには、以下が必要です。

Stackdriver Debugger の使用

Stackdriver Debugger を使用する手順は次のとおりです。

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

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

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

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

  1. 実行中のアプリケーションに Stackdriver Debugger を接続したら、監視するソースコードを含むファイルに移動します。
  2. 標準の IDEA デバッガを使用して、ローカル アプリケーションに行ブレークポイントを設定するときと同じように、左のガター領域でスナップショットをとる実行可能行をクリックします。

    ガターにスナップショットの場所をマークする青い円が表示され、Stackdriver Debugger のスナップショットのペインに保留中のスナップショットが表示されます。

  3. スナップショットの場所を削除するには、青い円をクリックします。

以下の例で、スナップショットの場所は行 if (userAgent != null) { に設定されています。

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

スナップショットの取得

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

Stackdriver Debugger のスナップショットのペインのスナップショットのラベルが [Pending] から Stackdriver がスナップショットを取得した時刻に変わります。

スタック トレースを表示

高度なコンセプト

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

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

watch 式

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

スナップショットの場所の設定後に watch 式を指定できます。watch 式は、上記のスナップショット条件と同じ言語機能をサポートします。

詳細

IntelliJ IDEA での Stackdriver Debugger 機能について詳しくは、IntelliJ IDEA Google Cloud Debugger Tutorial をご覧ください。

次のステップ

  • GitHub でプラグインのコードを調べて問題を報告します。または、Stack Overflow で質問します。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。