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

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

フレームの概念をより深く理解するために、プログラムの実行時に何が起こるかを見てみましょう。プログラムの実行は main
メソッドから始まり、次に他のメソッドが呼び出されます。これらの各メソッドは、追加のメソッド呼び出しを行う場合があります。各メソッド呼び出しのローカル変数とパラメーターのセットは、フレームによって表されます。
メソッドが呼び出されるたびに、新しいフレームがスタックの一番上に追加されます。メソッドの実行が完了すると、対応するフレームがスタックから削除されます(後入れ先出し方式)。
フレームを調べることで、特定のパラメーターがメソッドに渡された理由と、呼び出し時の呼び出し元の状態を理解できます。
スレッドステータス
スレッドステータスは、スレッドで現在何が起こっているかを反映するために Java によって提供されます。
スレッド状況 | 説明 |
---|---|
MONITOR | スレッドは Java モニターで待機しています。 |
NOT_STARTED | スレッドはまだ開始されていません。 |
RUNNING | スレッドはアクティブで実行中です。 |
SLEEPING | |
UNKNOWN | スレッドのステータスは不明です。 |
WAIT | |
ZOMBIE | スレッドは実行を完了しました。 |
「スレッド」アイコン
各スレッドの近くにあるアイコンは、スレッドのステータスを示します。
アイコン | 説明 |
---|---|
| 中断状態の現在のスレッド。 |
| アクティブなスレッド。 |
| 現在のブレークポイントにヒットしたスレッド。 |
| 中断されたスレッド。スレッドは、デバッガーによって一時停止されたときに一時停止としてマークされます。 |
| フリーズしたスレッド。スレッドは手動で一時停止されたときにフリーズとしてマークされます。 |
デフォルトでは、IntelliJ IDEA はフレームワークとライブラリの呼び出しに対応するフレームを非表示にします。
ライブラリからフレームを表示
非表示のフレームを表示するには、フレームペインの右上隅にあるすべてのフレームを表示トグルボタン
を押します。
パッケージを非表示に設定する
に移動します。
に非表示にするパッケージを指定します。
が有効になっていることを確認してください。
スタックをクリップボードにコピー
現在のスレッドのコールスタックをコピーするには、フレームタブの任意の場所を右クリックして、スタックをコピーを選択します。
スレッドのエクスポート
各スレッドの状態とそのスタックトレースを含むレポートを取得する必要がある場合は、スレッドのエクスポートオプションを使用します。これは、スレッドに関する情報をテキスト形式で共有する必要がある場合に便利です。
フレームペインの任意の場所を右クリックし、メニューからスレッドのエクスポートを選択します。
レポートをテキストファイルとして保存するには、スレッドのエクスポートダイアログでファイルへのパスを指定して保存をクリックするか、コピーをクリックしてクリップボードにコピーします。
変数の調査 / 更新
変数タブには、選択したフレーム / スレッド内の変数のリストが表示されます。変数を調べると、プログラムが特定の方法で動作する理由を理解できます。

各変数の左側のアイコンは、その型を示しています。
変数型
アイコン | 説明 |
---|---|
| 外側のクラスの静的メンバー |
| オブジェクトのフィールド (静的および非静的の両方) |
| 自己参照オブジェクトを含むフィールド (たとえば、フィールドが初期化される前の |
| 最終フィールド |
| static フィールド |
| スローされた例外 ( 例外ブレークポイントにヒットしたときにのみ表示されます) |
| メソッドの戻り値 ( メソッド戻り値の表示オプションが有効な場合にのみ表示) |
| メソッドパラメーター |
| 列挙型定数 |
| ローカル配列 |
| ローカルプリミティブ型 |
| ウォッチと自動変数。 |
| ローカル参照変数 |
フィールドのピン留め
オブジェクトに多数のフィールドがある場合は、それらのいくつかをピン留めして、常にリストの上部に表示されるようにすることができます。この優先順位は、対応するクラスのすべてのインスタンスに適用されます。
変数ペインで、変数型を示すアイコンをクリックします。
フィールドが固定されると、青いフラグ が元のアイコンを置き換えます。フィールドの固定を解除するには、このフラグをクリックします。
変数のコピー
変数を調べるときに、変数名または値をコピーして別の場所に貼り付けたり、別の変数と比較したりする必要がある場合があります。
変数の名前をコピーするには、変数を右クリックして名前をコピーを選択します。
変数が保持する値をコピーするには、変数を右クリックして値をコピー Ctrl+C を選択します。
String
以外の型の場合、toString
表現がコピーされます。
変数をクリップボードと比較する
変数値を他の値と比較するには、クリップボードと値を比較オプションを使用します。これは、たとえば、変数に長い文字列が格納されていて、それを別の長い文字列と比較する必要がある場合に役立ちます。
たとえば、テキストファイルから比較するコンテンツをコピーします。
変数タブで変数を右クリックし、クリップボードと値を比較を選択します。
開いた差分ビューアーで相違点を調べます。差分ビューアーの詳細については、ファイルとフォルダーの比較を参照してください。
専用の変数を表示するダイアログ
IntelliJ IDEA では、専用のダイアログで変数をインスペクションできます。これは、変数(または参照が保持されているオブジェクト)を追跡し、同時にフレームとスレッド間を移動できるようにする必要がある場合に便利です。
変数またはウォッチを右クリックし、インスペクションを選択します。
変数値を設定
プログラムが特定のデータに対してどのように動作するかをテストしたり、実行時にフローを変更したりする場合は、変数値を変更することでそれを実現できます。
変数を選択し、F2 を押します。または、コンテキストメニューから値の設定を選択します。
変数の値を入力し、Enter を押します。
ソースコードに移動する
変数ペインから宣言に移動できます。
変数が宣言されているコードに移動するには、変数を右クリックしてソースに移動 F4 を選択します。
変数型のクラス宣言に移動するには、変数を右クリックして型ソースに移動 Shift+F4 を選択します。
スタックトレース要素からメソッド本体に移動するには、変数ペインのスタックトレース要素の近くにある移動をクリックします。
入ってくる参照を調べる
IntelliJ IDEA は、変数タブ上のオブジェクトへの参照を保持している現在存在するオブジェクトに関する情報を提供します。この機能は、外部変数を使用する匿名クラスのような間接参照も検出します。
参照オブジェクトのリストを表示するには、「変数」タブで変数を右クリックし、「参照オブジェクトの表示」を選択します。

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

式の評価
IntelliJ IDEA を使用すると、デバッグセッション中に式を評価して、プログラムの状態に関する追加の詳細を取得したり、実行時にさまざまな実行シナリオをテストしたりできます。
この機能は、プログラムがブレークポイントに到達した後に中断された(一時停止されていない)場合にのみ機能します。
式内で呼び出されるメソッド内にブレークポイントがある場合、それらは無視されます。
エディターで簡単な式を評価する
式をすばやく評価するには、エディターで式をポイントします。メソッド呼び出しはこの方法では評価できないことに注意してください。
評価する式をポイントします。式の結果がツールチップに表示されます。
結果のオブジェクトの子要素を表示するには、
をクリックするか、Ctrl+F1 を押します。
値のツールチップが邪魔になる場合は、遅延を増やすか、完全に無効にすることができます。これを行うには、設定ダイアログ (Ctrl+Alt+S) で に移動し、好みに応じて値ツールチップを表示および値ツールチップの遅延オプションを設定します。
エディターで複雑な式を評価する
メソッド呼び出しを含むコード内の式を評価する場合、または評価する式の特定の部分を指定する場合は、式のクイック評価オプションを使用します。
Alt を押したまま、評価する式をクリックします。
または、式を選択してから Ctrl+Alt+F8 を押すか、表示されるフローティングツールバーから式の評価を選択します。
式のクイック評価を構成して、コードを選択するだけで(メニュー / ショートカットを使用せずに)コードで機能するようにできます。このオプションを有効にすると、誤ってメソッドを呼び出す可能性があるため、慎重に使用してください。
コード選択時に式を評価する
コード選択時に値ツールチップを表示するオプションを設定します。
に移動し、
任意の式を評価する
任意の式を評価することは、最も柔軟な評価オプションです。現在のフレームのコンテキスト内にある限り、任意のカスタムコードを評価できます。これを使用すると、宣言、メソッド呼び出し、switch 式、匿名クラス、ラムダ、ループなどを評価できます。
任意の式を評価するには、変数ペインの式の評価フィールドに式を入力して、を押します。Enter
結果はすぐ下に表示されます。式フィールドの右側にある
をクリックして、式をウォッチに追加することもできます。
長いコードブロックを評価する場合は、専用のダイアログを使用することをお勧めします。
専用の式を評価するダイアログ
現在目の前にある式または変数 (たとえば、エディターまたは変数ペイン) から開始する場合は、それを選択します。
式の評価を選択します。ショートカットは Ubuntu では機能しない可能性があります (正しく操作するには、ショートカット設定を調整してください )。
Alt+F8 に移動するか、コンテキストメニューから「評価」ダイアログで、選択した式を変更するか、「式」フィールドに新しい式を入力します。複数行のコードフラグメントを変更するには、「展開 Shift+Enter 」をクリックします。
評価(複数行モードの場合は Ctrl+Enter)をクリックします。式の結果が結果フィールドに表示されます。
式の結果は return ステートメントから取得されます。return ステートメントがない場合、結果はコードの最後の行から取得されます (式である必要さえありません。単一のリテラルでも機能します)。値を取得する有効な行がない場合、結果は
undefined
になります。指定された式を評価できない場合は、結果フィールドにその理由が示されます。
評価ダイアログは非モーダルなので、フォーカスをエディターに戻して他の変数や式をコピーすることができます。また、複数の評価ダイアログを開くこともできます。
インラインで値を表示
IntelliJ IDEA は、変数の使用箇所のすぐ隣に変数の値を表示します。

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

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

インラインビューはデフォルトで有効になっています。これをオフにするには、設定ダイアログ (Ctrl+Alt+S) で に移動し、値をインラインで表示するオプションを無効にします。
インラインウォッチを追加する
ある式の結果を特定の行に表示したい場合は、そのためのインラインウォッチを設定できます。インラインウォッチは永続的であり、セッションの再開後もアクティブなままです。
フィールドを追跡するオブジェクトを参照するインラインヒントをクリックします。
ポップアップで、フィールドを選択し、インラインウォッチとして追加をクリックします。
必要に応じてウォッチを微調整します。有効な Java 式をウォッチとして使用できます。
エディターで設定したインラインウォッチは、デバッグツールウィンドウの変数タブのインラインウォッチにも表示されます。
インラインウォッチを削除するには、ウォッチにカーソルを合わせ、近くの十字をクリックします。
DFA 支援のデバッグ
IntelliJ IDEA は、実行されたコード部分で後で何が起こるかについてのハイライトも提供します。この分析には、例外、ブール式の結果、コードパスが含まれます。


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

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

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

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

コンテキストに関係なくインスタンスを追跡する場合は、このラベルのウォッチを作成します。このタイプのウォッチでは、オブジェクトは現在のフレームとスレッドに関係なく常に手元にあります。
ラベルの追加
変数タブで、追跡するオブジェクトを現在参照している変数またはウォッチを右クリックします。メニューからオブジェクトをマーク F11 を選択します。
ラベルの名前を入力します。オプションで表示色を選択できます。この場合、
をクリックして色を選択します。構成が完了したら、「OK」をクリックします。
ラベルの除去
削除するラベルを右クリックして、メニューからオブジェクトのマークを解除 F11 を選択します。
実行ポイント
現在の実行ポイントに戻る
プログラムの状態を調べるには、コード内を移動する必要があり、多くの場合、プログラムが中断されている場所に戻る必要があります。
以下のいずれか 1 つを実行します:
メインメニューで、
に移動します。Alt+F10 を押します。
デバッグツールウィンドウのステップツールバーで
をクリックし、開いたコンテキストメニューから
実行ポイントの表示を選択します。

関連ページ:

デバッガーセッションを開始する
デバッガーセッションの開始は、プログラムを通常モードで実行するのと非常によく似ています。デバッガーはバックグラウンドで接続されているため、デバッガーセッションを開始するために特別な設定を行う必要はありません。IntelliJ IDEA からプログラムを実行できる場合は、同じ構成を使用してプログラムをデバッグすることもできます。プログラムをデバッグするたびに、デバッガーセッションは実行 / デバッグ構成に基づきます。これにより、アプリケーションを起動するためのパラメーターとアクションを構成できます...

デバッグツールウィンドウ
デバッガーセッションを開始すると、デバッグツールウィンドウが開きます。このウィンドウを使用して、デバッガーセッションを制御し、プログラムデータ (フレーム、スレッド、変数など) を表示および分析し、デバッガーアクションを実行します。デフォルトでは、プログラムがブレークポイントに到達したときにデバッグツールウィンドウが開き、セッションが終了しても非表示になりません。この動作を変更するには、ビルド、実行、デプロイ | デバッガー設定ページに移動し、ブレークポイントでデバッグウィンドウを表示するチェ...

ブレークポイント
ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、たとえば、特定のコード行に到達したときにプログラムを一時停止するなどの単純なものから、追加の条件をチェックしたり、ログに書き込んだりするなどのより複雑なロジックを含むものまであります。ブレークポイントは、一度設定すると、一時的なブレークポイントを除き、明示的に削除するまでプロジェクト内に残ります。ブレークポイントの種類:Intell

ファイル、フォルダー、テキストソースを比較する
IntelliJ IDEA を使用すると、ファイル、フォルダー、ローカルファイルとそのリポジトリバージョン、データベースオブジェクト、テキストソース間の違いを確認できます。ファイルを比較:2 つまたは 3 つのファイルを比較するプロジェクトツールウィンドウで、比較するファイルを選択し、を選択するか、を押します。または、1 つのファイルを選択し、コンテキストメニューから比較を選択して、プロジェクトの外部にあるファイルを選択します。アクティブなエディターをクリップボードと比較するエディターの任...

JVM ヒープ内のオブジェクトを分析する
デバッグ時に、メモリタブを使用してヒープ内のオブジェクトを確認できます。IntelliJ IDEA を使用すると、個々のクラスインスタンスを追跡し、オブジェクトが生成または保持される条件を分析できます。この情報は、メモリリークとその原因を検出できます。一部のエラーは見落としやすいため、コード検査だけでは手がかりが得られない場合があります。例: 内部クラスによって外部クラスがガベージコレクションの対象にならない場合があり、その結果が発生する可能性があります。このような場合、メモリタブと参照オブジェ...

キーボードショートカットを設定する
IntelliJ IDEA には定義済みのキーマップがいくつか含まれており、頻繁に使用するショートカットをカスタマイズできます。キーマップ構成を表示するには、設定ダイアログを開き、キーマップを選択します。IntelliJ IDEA は、環境に基づいて事前定義されたキーマップを自動的に提案します。使用している OS と一致することを確認するか、使用している別の IDE またはエディターからのショートカットと一致するものを選択してください(たとえば、Eclipse または NetBeans)。キー...