中断されたプログラムを調べる
デバッガーセッションが 開始されると、 デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。
その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりできます。
フレームを調べる
プログラムの状態は フレームで表されます。 プログラムが一時停止すると、現在のフレームスタックが デバッグ ツールウィンドウの フレーム タブに表示されます。

フレームはアクティブなメソッドまたは関数呼び出しに対応します。 呼び出されたメソッドまたは関数のローカル変数、その引数、式の評価を可能にするコードコンテキストを格納します。

フレームの概念をより深く理解するために、プログラムの実行時に何が起こるかを見てみましょう。 プログラムの実行は main メソッドから始まり、次に他のメソッドが呼び出されます。 これらの各メソッドは、追加のメソッド呼び出しを行う場合があります。 各メソッド呼び出しのローカル変数とパラメーターのセットは、フレームによって表されます。
メソッドが呼び出されるたびに、新しいフレームがスタックの一番上に追加されます。 メソッドの実行が完了すると、対応するフレームがスタックから削除されます(後入れ先出し方式)。
フレームを調べることで、特定のパラメーターがメソッドに渡された理由と、呼び出し時の呼び出し元の状態を理解できます。
スレッドステータス
スレッドステータスは、スレッドで現在何が起こっているかを反映するために Java によって提供されます。
スレッド状況 | 説明 |
|---|---|
MONITOR | スレッドは Java モニターで待機しています。 |
NOT_STARTED | スレッドはまだ開始されていません。 |
RUNNING | スレッドはアクティブで実行中です。 |
SLEEPING |
|
UNKNOWN | スレッドのステータスは不明です。 |
WAIT |
|
ZOMBIE | スレッドは実行を完了しました。 |
「スレッド」アイコン
各スレッドの近くにあるアイコンは、スレッドのステータスを示します。
アイコン | 説明 |
|---|---|
中断状態の現在のスレッド。 | |
アクティブなスレッド。 | |
現在のブレークポイントにヒットしたスレッド。 | |
中断されたスレッド。 スレッドは、デバッガーによって一時停止されたときに一時停止としてマークされます。 | |
フリーズしたスレッド。 スレッドは 手動で一時停止されたときにフリーズとしてマークされます。 |
デフォルトでは、IntelliJ IDEA はフレームワークとライブラリの呼び出しに対応するフレームを非表示にします。
ライブラリからフレームを表示
非表示のフレームを表示するには、 フレーム ペインの右上隅にある すべてのフレームを表示 トグルボタン
を押します。

パッケージを非表示に設定する
に移動します。
に非表示にするパッケージを指定します。
が有効になっていることを確認してください。
スタックをクリップボードにコピー
現在のスレッドのコールスタックをコピーするには、 フレーム タブの任意の場所を右クリックして、 Copy Stack を選択します。
スレッドのエクスポート
各スレッドの状態とそのスタックトレースを含むレポートを取得する必要がある場合は、 スレッドのエクスポート オプションを使用します。 これは、スレッドに関する情報をテキスト形式で共有する必要がある場合に便利です。
フレーム ペインの任意の場所を右クリックし、メニューから スレッドのエクスポート を選択します。

レポートをテキストファイルとして保存するには、 スレッドのエクスポート ダイアログでファイルへのパスを指定して 保存する をクリックするか、 コピー をクリックしてクリップボードにコピーします。

変数の調査 / 更新
変数 タブには、選択した フレーム / スレッド内の変数のリストが表示されます。 変数を調べると、プログラムが特定の方法で動作する理由を理解できます。

各変数の左側のアイコンは、その型を示しています。
変数型
アイコン | 説明 |
|---|---|
外側のクラスの静的メンバー | |
オブジェクトのフィールド (静的および非静的の両方) | |
自己参照オブジェクトを含むフィールド (たとえば、フィールドが初期化される前の | |
最終フィールド | |
static フィールド | |
スローされた例外 (例外ブレークポイントにヒットしたときにのみ表示されます) | |
メソッドの戻り値 (メソッド戻り値の表示 オプションが有効な場合にのみ表示) | |
メソッドパラメーター | |
列挙型定数 | |
ローカル配列 | |
ローカルプリミティブ型 | |
ウォッチと自動変数。 | |
ローカル参照変数 |
フィールドのピン留め
オブジェクトに多数のフィールドがある場合は、それらのいくつかをピン留めして、常にリストの上部に表示されるようにすることができます。 この優先順位は、対応するクラスのすべてのインスタンスに適用されます。
変数 ペインで、変数型を示すアイコンをクリックします。

フィールドが固定されると、青いフラグ が元のアイコンを置き換えます。 フィールドの固定を解除するには、このフラグをクリックします。
変数のコピー
変数を調べるときに、変数名または値をコピーして別の場所に貼り付けたり、別の変数と 比較したりする必要がある場合があります。
変数の名前をコピーするには、変数を右クリックして Copy Name を選択します。
変数が保持する値をコピーするには、変数を右クリックして Copy Value Ctrl+C を選択します。
String以外の型の場合、toString表現がコピーされます。
変数をクリップボードと比較する
変数値を他の値と比較するには、 Compare Value with Clipboard オプションを使用します。 これは、たとえば、変数に長い文字列が格納されていて、それを別の長い文字列と比較する必要がある場合に役立ちます。
たとえば、テキストファイルから比較するコンテンツをコピーします。
変数 タブで変数を右クリックし、 Compare Value with Clipboard を選択します。
開いた差分ビューアーで相違点を調べます。 差分ビューアー の詳細については、 ファイルとフォルダーの比較を参照してください。

専用の変数を表示するダイアログ
IntelliJ IDEA では、専用のダイアログで変数をインスペクションできます。 これは、変数(または参照が保持されているオブジェクト)を追跡し、同時にフレームとスレッド間を移動できるようにする必要がある場合に便利です。
変数またはウォッチを右クリックし、 インスペクション を選択します。

変数値を設定
プログラムが特定のデータに対してどのように動作するかをテストしたり、実行時にフローを変更したりする場合は、変数値を変更することでそれを実現できます。
変数を選択し、 F2 を押します。 または、コンテキストメニューから 値の設定 を選択します。
変数の値を入力し、 Enter を押します。

instance="rm"/>
ソースコードに移動する
変数 ペインから宣言に移動できます。
変数が宣言されているコードに移動するには、変数を右クリックして ソースに移動 F4 を選択します。

変数型のクラス宣言に移動するには、変数を右クリックして 型ソースに移動 Shift+F4 を選択します。

スタックトレース要素からメソッド本体に移動するには、 変数 ペインのスタックトレース要素の近くにある 移動 をクリックします。

入ってくる参照を調べる
IntelliJ IDEA は、 変数 タブ上のオブジェクトへの参照を保持している現在存在するオブジェクトに関する情報を提供します。 この機能は、外部変数を使用する匿名クラスのような間接参照も検出します。
参照オブジェクトのリストを表示するには、「変数 」タブで変数を右クリックし、「参照元オブジェクトの表示 」を選択します。

参照オブジェクト ダイアログが開き、選択したオブジェクトへの参照をインスペクションし、参照チェーンを GC ルートまでトレースできます。
何らかのタイプの既存のすべてのオブジェクトの概要が必要な場合、 デバッグ ツールウィンドウの メモリタブを使用して概要を取得できます。
コレクションの内容を閲覧する
配列とリストの場合、個々のオブジェクトをインスペクションするための構造ビューとともに、ページ分けされたエントリのリストを取得できます。
変数 ビューまたはエディターで、コレクションオブジェクトの近くにある 表示 をクリックします。
カスタムの並べ替えやフィルタリングを行うには、列ヘッダーとダイアログのツールバーにあるアイコンを使用します。


式の評価
IntelliJ IDEA を使用すると、デバッグセッション中に式を評価して、プログラムの状態に関する追加の詳細を取得したり、実行時にさまざまな実行シナリオをテストしたりできます。
この機能は、プログラムがブレークポイントに到達した後に中断された(一時停止されていない)場合にのみ機能します。
式内で呼び出されるメソッド内にブレークポイントがある場合、それらは無視されます。
エディターで簡単な式を評価する
式をすばやく評価するには、エディターで式をポイントします。 メソッド呼び出しはこの方法では評価できないことに注意してください。
評価する式をポイントします。 式の結果がツールチップに表示されます。

結果のオブジェクトの子要素を表示するには、
をクリックするか、 Ctrl+F1 を押します。

値のツールチップが邪魔になる場合は、遅延を増やすか、完全に無効にすることができます。 これを行うには、 設定 ダイアログ (Ctrl+Alt+S) で に移動し、好みに応じて 値ツールチップを表示 および 値ツールチップの遅延 オプションを設定します。
エディターで複雑な式を評価する
メソッド呼び出しを含むコード内の式を評価する場合、または評価する式の特定の部分を指定する場合は、 式のクイック評価 オプションを使用します。
Alt を押したまま、評価する式をクリックします。

または、式を選択してから Ctrl+Alt+F8 を押すか、表示されるフローティングツールバーから 式の評価 を選択します。

式のクイック評価 を構成して、コードを選択するだけで(メニュー / ショートカットを使用せずに)コードで機能するようにできます。 このオプションを有効にすると、誤ってメソッドを呼び出す可能性があるため、慎重に使用してください。
コード選択時に式を評価する
に移動し、 コード選択時に値ツールチップを表示する オプションを設定します。
任意の式を評価する
任意の式を評価することは、最も柔軟な評価オプションです。 現在のフレームのコンテキスト内にある限り、任意のカスタムコードを評価できます。 これを使用すると、宣言、メソッド呼び出し、switch 式、匿名クラス、ラムダ、ループなどを評価できます。
任意の式を評価するには、 変数 ペインの 式の評価 フィールドに式を入力し、 Enter を押します

結果はすぐ下に表示されます。 式フィールドの右側にある
をクリックして、 式をウォッチに追加することもできます。

長いコードブロックを評価する場合は、専用のダイアログを使用することをお勧めします。
専用ダイアログで式を評価する
現在目の前にある式または変数 (たとえば、エディターまたは 変数 ペイン) から開始する場合は、それを選択します。

Alt+F8 に移動するか、コンテキストメニューから 式の評価 を選択します。 ショートカットは Ubuntu では機能しない可能性があります (正しく操作するには、 ショートカット設定を調整してください)。
「評価 」ダイアログで、選択した式を変更するか、「式 」フィールドに新しい式を入力します。 複数行のコードフラグメントを変更するには、「展開 Shift+Enter 」をクリックします。

評価 (複数行モードの場合は Ctrl+Enter )をクリックします。 式の結果が 結果 フィールドに表示されます。
式の結果は、return ステートメントから取得されます。 return ステートメントがない場合、結果はコードの最終行から取得されます(必ずしも式である必要はありません。リテラル 1 行だけでも構いません)。 有効な行から値を取得できない場合、結果は
未定義になります。 指定した式を評価できない場合、 結果 フィールドに理由が表示されます。
評価 ダイアログは非モーダルなので、フォーカスをエディターに戻して他の変数や式をコピーすることができます。 また、複数の 評価 ダイアログを開くこともできます。
インラインで値を表示
IntelliJ IDEA は、変数の使用箇所のすぐ隣に変数の値を表示します。

変数値が変更されると、インラインビューが新しい値で更新され、色が変更されます。

行にオブジェクトへの参照が含まれている場合は、エディター内でそのフィールドを調べることができます。 このポップアップから、 変数値を変更したり、 カスタム型レンダラーを作成したり、 インラインウォッチを追加したりすることもできます。

インラインビューはデフォルトで有効になっています。 これをオフにするには、 設定 ダイアログ (Ctrl+Alt+S) で に移動し、 値をインラインで表示する オプションを無効にします。
インラインウォッチを追加する
ある式の結果を特定の行に表示したい場合は、そのためのインライン ウォッチを設定できます。 インラインウォッチは永続的であり、セッションの再開後もアクティブなままです。
フィールドを追跡するオブジェクトを参照するインラインヒントをクリックします。
ポップアップで、フィールドを選択し、 インラインウォッチとして追加 をクリックします。

必要に応じてウォッチを微調整します。 有効な Java 式をウォッチとして使用できます。

エディターで設定したインラインウォッチは、 デバッグ ツールウィンドウの 変数 タブの インラインウォッチ にも表示されます。
インラインウォッチを削除するには、ウォッチにカーソルを合わせ、近くの十字をクリックします。
DFA 支援のデバッグ
IntelliJ IDEA は、実行されたコード部分で後で何が起こるかについてのハイライトも提供します。 この分析には、例外、ブール式の結果、コードパスが含まれます。


以降の実行の分析を無効にするには、 に移動し、 データフロー解析に基づいて条件値と例外を予測 チェックボックスをオフにします。
JSON と XML を視覚化する
インライン値を展開したり、JSON または XML を含む 文字列式を評価したりすると、IntelliJ IDEA によってデータの構造化されフォーマットされたビューが提供されます。
これにより、 コードの折りたたみや 選択範囲の拡大または縮小などのエディター機能を使用して、サブツリーを操作したり、大きなオブジェクト内での便利なナビゲーションを行ったりすることができます。
プレビューポップアップのタブを使用して、構造化ビューと生のビューを切り替えます。

ウォッチ式
変数またはより複雑な式の結果を追跡したい場合は、この変数または式の監視を設定します。 これは、変数のリストに定期的に表示されないものを評価する必要がある場合に便利です。
この機能は、プログラムがブレークポイントに到達した後に中断された(一時停止されていない)場合にのみ機能します。
ウォッチは、選択したフレームのコンテキストで評価されます。 ウォッチは、コンテキストから外れている場合、またはコンパイルに失敗した場合は評価できません。 この場合、ウォッチにはエラーアイコン のマークが付けられます。
デフォルトでは、監視は変数とともに 変数 ペインに表示されます。 ウォッチ式 ペインを表示 / 非表示にするには、 レイアウト設定 メニューの ウォッチを個別に表示 オプションを使用します。
ウォッチを追加する
追跡したい表現に応じて、次のようになります。
エディター内の式の場合 – 式を選択し、表示されるフローティングツールバーの Add to Watches アイコン(
)をクリックします。 または、式を 変数 タブにドラッグします。

現在のコンテキスト内の要素の場合 – 変数 タブで変数を右クリックし、メニューから Add to Watches を選択します。
任意の式の場合 – 変数 タブの上部に式を入力し、 Add to Watches をクリックします。

特定のタイプのオブジェクトがインスペクションされたときにのみウォッチを表示する場合は、クラスレベルのウォッチを設定できます。
クラスレベルのウォッチを追加する
変数 ペインでそのようなオブジェクトを右クリックし、 新規クラスレベルのウォッチ式 を選択します。
ウォッチ式 に変数 / 式を追加した後、変数 / 式はそこに残り、各 ステップで評価され、現在のコンテキストで結果を提供します。

ウォッチを編集する
目的のウォッチを右クリックして、 Edit を選択します。
ウォッチを削除する
単一の監視を削除するには、それを右クリックして ウォッチ式の除去 を選択します。 または、ウォッチを選択して Delete を押します。
すべての監視を削除するには、 変数/ウォッチ式 ペインの任意の場所を右クリックし、 すべてのウォッチ式を除去 を選択します。
ウォッチは、変数と同じアクションを可能にします。 たとえば、 専用のダイアログで表示したり、 ソースコードに移動したりできます。
ウォッチはプロジェクトの一部です。 これは、デバッグセッションを失うリスクなしに、デバッグセッションを停止して再実行できることを意味します。
視聴を一時停止して再開する
ウォッチがローカルコンテキストに依存していたり、大量の計算を伴う場合、一部のステップでは評価が現実的でないことがあります。 そのような場合は、ウォッチを一時停止して必要に応じて評価することができます。
ウォッチを一時停止するには、ウォッチを右クリックし、 ウォッチの一時停止 を選択します。
ウォッチを再開するには、ウォッチを右クリックし、 ウォッチの再開 を選択します。
一時停止中のウォッチの 1 回限りの評価を実行するには、ウォッチの近くにある 評価 をクリックします。
ラベル
デバッグ中に、任意のインスタンスをマークして、任意のコンテキストで簡単に識別できるようにすることが役立つ場合があります。 このために、ラベルを追加できます。 添付されると、ラベルはその寿命全体にわたってオブジェクトに付随します。

これは、条件または式が使用される場合に特に役立ちます。このオブジェクトへの参照を検索する代わりに、ラベルでそのオブジェクトを参照できます。

コンテキストに関係なくインスタンスを追跡する場合は、このラベルのウォッチを作成します。 このタイプのウォッチでは、オブジェクトは現在のフレームとスレッドに関係なく常に手元にあります。
ラベルの追加
変数 タブで、追跡するオブジェクトを現在参照している変数またはウォッチを右クリックします。 メニューから オブジェクトのマーク F11 を選択します。
ラベルの名前を入力します。 オプションで表示色を選択できます。 この場合、
をクリックして色を選択します。 構成が完了したら、「OK 」をクリックします。

ラベルの除去
削除するラベルを右クリックして、メニューから オブジェクトのマークを解除 F11 を選択します。
実行ポイント
現在の実行ポイントに戻る
プログラムの状態を調べるには、コード内を移動する必要があり、多くの場合、プログラムが中断されている場所に戻る必要があります。
次のいずれかを実行します。
メインメニューで へ移動します。
Alt+F10 を押す。
デバッグ ツールウィンドウのステップツールバーで
をクリックし、開いたコンテキストメニューから
実行ポイントの表示 を選択します。
