IntelliJ IDEA 2024.1 ヘルプ

中断されたプログラムを調べる

デバッガーセッションが開始されると、デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。

その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりできます。

フレームを調べる

プログラムの状態はフレームで表されます。プログラムが一時停止すると、現在のフレームスタックがデバッグツールウィンドウのフレームタブに表示されます。

Frames tab in the Debug tool window

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

Frames and threads are selected in the Frames tab

フレームの概念をより深く理解するために、プログラムの実行時に何が起こるかを見てみましょう。プログラムの実行は main メソッドから始まり、次に他のメソッドが呼び出されます。これらの各メソッドは、追加のメソッド呼び出しを行う場合があります。各メソッド呼び出しのローカル変数とパラメーターのセットは、フレームによって表されます。

メソッドが呼び出されるたびに、新しいフレームがスタックの一番上に追加されます。メソッドの実行が完了すると、対応するフレームがスタックから削除されます(後入れ先出し方式)。

フレームを調べることで、特定のパラメーターがメソッドに渡された理由と、呼び出し時の呼び出し元の状態を理解できます。

スレッドステータス

スレッドステータスは、スレッドで現在何が起こっているかを反映するために Java によって提供されます。

スレッド状況

説明

MONITOR

スレッドは Java モニターで待機しています。

NOT_STARTED

スレッドはまだ開始されていません。

RUNNING

スレッドはアクティブで実行中です。

SLEEPING

Thread.sleep() または JVM_Sleep() が呼び出されたため、スレッドはスリープしています。

UNKNOWN

スレッドのステータスは不明です。

WAIT

Object.wait() または JVM_MonitorWait() が呼び出された後、スレッドは待機しています。

ZOMBIE

スレッドは実行を完了しました。

「スレッド」アイコン

各スレッドの近くにあるアイコンは、スレッドのステータスを示します。

アイコン

説明

Current thread

中断状態の現在のスレッド。

Running thread

アクティブなスレッド。

Thread at breakpoint

現在のブレークポイントにヒットしたスレッド。

Suspended thread

中断されたスレッド。スレッドは、デバッガーによって一時停止されたときに一時停止としてマークされます。

Frozen thread

フリーズしたスレッド。スレッドは手動で一時停止されたときにフリーズとしてマークされます。

デフォルトでは、IntelliJ IDEA はフレームワークとライブラリの呼び出しに対応するフレームを非表示にします。

ライブラリからフレームを表示

  • 非表示のフレームを表示するには、フレームペインの右上隅にあるすべてのフレームを表示トグルボタン show Frames from Libraries button を押します。

    Frames pane with 57 collapsed framework calls and Show All Frames button in the top-right corner

パッケージを非表示に設定する

  1. 設定 Ctrl+Alt+S | ビルド、実行、デプロイ | デバッガー | ステップに移動します。

  2. 授業に足を踏み入れないでくださいに非表示にするパッケージを指定します。

  3. ステップフィルターを使用してスタックフレームを非表示にするが有効になっていることを確認してください。

スタックをクリップボードにコピー

  • 現在のスレッドのコールスタックをコピーするには、フレームタブの任意の場所を右クリックして、スタックをコピーを選択します。

スレッドのエクスポート

各スレッドの状態とそのスタックトレースを含むレポートを取得する必要がある場合は、スレッドのエクスポートオプションを使用します。これは、スレッドに関する情報をテキスト形式で共有する必要がある場合に便利です。

  1. フレームペインの任意の場所を右クリックし、メニューからスレッドのエクスポートを選択します。

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

    Export Preview dialog

変数の調査 / 更新

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

The Variables tab shows you the variables visible from the current execution point

各変数の左側のアイコンは、その型を示しています。

変数型

アイコン

説明

Static members

外側のクラスの静的メンバー

A field

オブジェクトのフィールド (静的および非静的の両方)

A field containing a self-reference

自己参照オブジェクトを含むフィールド (たとえば、フィールドが初期化される前の Throwablecause)

A final field

最終フィールド

A static field

static フィールド

A thrown exception

スローされた例外 ( 例外ブレークポイントにヒットしたときにのみ表示されます)

A method return value

メソッドの戻り値 ( メソッド戻り値の表示オプションが有効な場合にのみ表示)

A parameter

メソッドパラメーター

An enum constant

列挙型定数

An array

ローカル配列

A primitive

ローカルプリミティブ型

A watch

監視と自動変数。

A primitive

ローカル参照変数

フィールドのピン留め

オブジェクトに多数のフィールドがある場合は、それらのいくつかをピン留めして、常にリストの上部に表示されるようにすることができます。この優先順位は、対応するクラスのすべてのインスタンスに適用されます。

  • 変数ペインで、変数型を示すアイコンをクリックします。

    Two fields are pinned and have blue flags against them

フィールドが固定されると、青いフラグ が元のアイコンを置き換えます。フィールドの固定を解除するには、このフラグをクリックします。

変数のコピー

変数を調べるときに、変数名または値をコピーして別の場所に貼り付けたり、別の変数と比較したりする必要がある場合があります。

  • 変数の名前をコピーするには、変数を右クリックして名前をコピーを選択します。

  • 変数が保持する値をコピーするには、変数を右クリックして値のコピー Ctrl+C を選択します。String 以外の型の場合、toString 表現がコピーされます。

変数をクリップボードと比較する

変数値を他の値と比較するには、クリップボードと値を比較オプションを使用します。これは、たとえば、変数に長い文字列が格納されていて、それを別の長い文字列と比較する必要がある場合に役立ちます。

  1. たとえば、テキストファイルから比較するコンテンツをコピーします。

  2. 変数タブで変数を右クリックし、クリップボードと値を比較を選択します。

  3. 開いた差分ビューアーで相違点を調べます。差分ビューアーの詳細については、ファイルとフォルダーの比較を参照してください。

    Clipboard vs Selected dialog

専用の変数を表示するダイアログ

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

  • 変数またはウォッチを右クリックし、インスペクションを選択します。

    Inspect dialog

変数値を設定

プログラムが特定のデータに対してどのように動作するかをテストしたり、実行時にフローを変更したりする場合は、変数値を変更することでそれを実現できます。

  1. 変数を選択し、F2 を押します。または、コンテキストメニューから値の設定を選択します。

  2. 変数の値を入力し、Enter を押します。

    Enter new value for the variable in the field right next to its name

変数ペインから宣言に移動できます。

  • 変数が宣言されているコードに移動するには、変数を右クリックしてソースに移動 F4 を選択します。

    Jump to Source takes you to the place where the variable is declared
  • 変数型のクラス宣言に移動するには、変数を右クリックして型ソースに移動 Shift+F4 を選択します。

    Jump to Type Source takes you to the place where the type of the variable is defined
  • スタックトレース要素からメソッド本体に移動するには、変数ペインのスタックトレース要素の近くにある移動をクリックします。

    Clicking Navigate takes you to the code of the corresponding method

入ってくる参照を調べる

IntelliJ IDEA は、変数タブ上のオブジェクトへの参照を保持している現在存在するオブジェクトに関する情報を提供します。この機能は、外部変数を使用する匿名クラスのような間接参照も検出します。

  • 参照オブジェクトのリストを表示するには、「変数」タブで変数を右クリックし、「参照オブジェクトの表示」を選択します。

Referring Objects dialog

参照オブジェクトダイアログが開き、選択したオブジェクトへの参照をインスペクションし、参照チェーンを GC ルートまでトレースできます。

何らかのタイプの既存のすべてのオブジェクトの概要が必要な場合、デバッグツールウィンドウのメモリタブを使用して概要を取得できます。

式の評価

IntelliJ IDEA を使用すると、デバッグセッション中に式を評価して、プログラムの状態に関する追加の詳細を取得したり、実行時にさまざまな実行シナリオをテストしたりできます。

この機能は、プログラムがブレークポイントに到達した後に中断された(一時停止されていない)場合にのみ機能します。

式内で呼び出されるメソッド内にブレークポイントがある場合、それらは無視されます。

エディターで簡単な式を評価する

式をすばやく評価するには、エディターで式をポイントします。メソッド呼び出しはこの方法では評価できないことに注意してください。

  1. 評価する式をポイントします。式の結果がツールチップに表示されます。

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

    Resulting objects are represented by trees. This helps you view their internal state

値のツールチップが邪魔になる場合は、遅延を増やすか、完全に無効にすることができます。これを行うには、設定ダイアログ (Ctrl+Alt+S) でビルド、実行、デプロイ | デバッガー | データビューに移動し、好みに応じて値ツールチップを表示および値ツールチップの遅延オプションを設定します。

エディターで複雑な式を評価する

メソッド呼び出しを伴うコード内の式を評価したい場合、または式のどの部分を評価するかについて特定したい場合は、式のクイック評価オプションを使用します。

  1. 式にキャレットを配置する(最も近い一致式を評価する)か、その一部を選択します(複雑な式のどの部分を評価するかを特定したい場合)。

    Select an entire expression or its part to evaluate
  2. 実行 | デバッグアクション | 式のクイック評価 Ctrl+Alt+F8 をクリックします。または、Alt を押しながら選択をクリックします。

    Value tooltip appears

式のクイック評価を構成して、コードを選択するだけで(メニュー / ショートカットを使用せずに)コードで機能するようにできます。このオプションを有効にすると、誤ってメソッドを呼び出す可能性があるため、慎重に使用してください。

コード選択時に式を評価する

  • 設定 | ビルド、実行、デプロイ | デバッガー | データビューに移動し、コード選択時に値ツールチップを表示するオプションを設定します。

任意の式を評価する

任意の式を評価することは、最も柔軟な評価オプションです。現在のフレームのコンテキスト内にある限り、任意のカスタムコードを評価できます。これを使用すると、宣言、メソッド呼び出し、switch 式、匿名クラス、ラムダ、ループなどを評価できます。

  1. 任意の式を評価するには、変数ペインの式の評価フィールドに式を入力して、を押します。Enter

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

    Result of an expression in the Variables tab

長いコードブロックを評価する場合は、専用のダイアログを使用することをお勧めします。

専用の式を評価するダイアログ

  1. 現在目の前にある式または変数 (たとえば、エディターまたは変数ペイン) から開始する場合は、それを選択します。

    Select the expression to start from
  2. 実行 | デバッグアクション | 式の評価 Alt+F8 に移動するか、コンテキストメニューから式の評価を選択します。ショートカットは Ubuntu では機能しない可能性があります (正しく操作するには、ショートカット設定を調整してください )。

  3. 評価」ダイアログで、選択した式を変更するか、「」フィールドに新しい式を入力します。複数行のコードフラグメントを変更するには、「展開 Shift+Enter 」をクリックします。

    The expression is entered in the Code Fragment field
  4. 評価(複数行モードの場合は Ctrl+Enter)をクリックします。式の結果が結果フィールドに表示されます。

    式の結果は return ステートメントから取得されます。return ステートメントがない場合、結果はコードの最後の行から取得されます (式である必要さえありません。単一のリテラルでも機能します)。値を取得する有効な行がない場合、結果は undefined になります。指定された式を評価できない場合は、結果フィールドにその理由が示されます。

    Expression result is calculated

評価ダイアログは非モーダルなので、フォーカスをエディターに戻して他の変数や式をコピーすることができます。また、複数の評価ダイアログを開くこともできます。

インラインで値を表示

IntelliJ IDEA は、変数の使用箇所のすぐ隣に変数の値を表示します。

Variable values are displayed at the lines where they are used

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

Inline values of the variables change with each step

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

Inline debugger hints

インラインビューはデフォルトで有効になっています。これをオフにするには、設定ダイアログ (Ctrl+Alt+S) でビルド、実行、デプロイ | デバッガー | データビューに移動し、値をインラインで表示するオプションを無効にします。

インラインウォッチを追加する

ある式の結果を特定の行に表示したい場合は、そのためのインラインウォッチを設定できます。インラインウォッチは永続的であり、セッションの再開後もアクティブなままです。

  1. フィールドを追跡するオブジェクトを参照するインラインヒントをクリックします。

  2. ポップアップで、フィールドを選択し、インラインウォッチとして追加をクリックします。

    Adding an inline watch option
  3. 必要に応じて監視を微調整します。有効な Java 式をウォッチとして使用できます。

    Setting an inline watch

エディターで設定したインラインウォッチは、デバッグツールウィンドウの変数タブのインラインウォッチにも表示されます。

インライン監視を削除するには、監視にカーソルを合わせ、近くの十字をクリックします。

DFA 支援のデバッグ

IntelliJ IDEA は、実行されたコード部分で後で何が起こるかについてのハイライトも提供します。この分析には、例外、ブール式の結果、コードパスが含まれます。

A hint showing the result of a future boolean condition
A hint showing that an exception will be thrown

以降の実行の分析を無効にするには、ビルド、実行、デプロイ | デバッガー | データビュー | Java に移動し、データフロー解析に基づいて条件値と例外を予測チェックボックスをオフにします。

監視式

変数またはより複雑な式の結果を追跡したい場合は、この変数または式の監視を設定します。これは、変数のリストに定期的に表示されないものを評価する必要がある場合に便利です。

この機能は、プログラムがブレークポイントに到達した後に中断された(一時停止されていない)場合にのみ機能します。

ウォッチは、選択したフレームのコンテキストで評価されます。ウォッチは、コンテキストから外れている場合、またはコンパイルに失敗した場合は評価できません。この場合、監視にはエラーアイコン Error icon のマークが付けられます。

デフォルトでは、監視は変数とともに変数ペインに表示されます。監視式ペインを表示 / 非表示にするには、レイアウト設定 the Restore Layout button メニューの別々のウォッチオプションを使用します。

監視を追加する

  • どこでも評価される通常の監視の場合は、「変数」ペインの上部に式を入力し、「ウォッチポイントに追加」をクリックします。

    The expression in the Variables tab

    特定のタイプのオブジェクトがインスペクションされるときにのみ監視を表示したい場合は、「変数」ペインでそのオブジェクトを右クリックし、「新規クラスレベルの監視式」を選択します。

監視式に変数 / 式を追加した後、変数 / 式はそこに残り、各ステップで評価され、現在のコンテキストで結果を提供します。

The expression result in the Variables tab

ウォッチを編集する

  • 目的の監視を右クリックして、編集を選択します。

監視を削除する

  • 単一の監視を削除するには、それを右クリックしてウォッチ式の除去を選択します。または、監視を選択して Delete を押します。

  • すべての監視を削除するには、変数 / 監視式ペインの任意の場所を右クリックし、すべてのウォッチ式を除去を選択します。

ウォッチは、変数と同じアクションを可能にします。例: 専用のダイアログボックスで表示するか、ソースコードに移動するために使用できます。

ウォッチはプロジェクトの一部です。これは、デバッグセッションを失うリスクなしに、デバッグセッションを停止して再実行できることを意味します。

ラベル

デバッグ中に、任意のインスタンスをマークして、任意のコンテキストで簡単に識別できるようにすることが役立つ場合があります。このために、ラベルを追加できます。添付されると、ラベルはその寿命全体にわたってオブジェクトに付随します。

A labeled instance on the Variables tab

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

Using a labeled object in comparison (Evaluate dialog)

コンテキストに関係なくインスタンスを追跡する場合は、このラベルのウォッチを作成します。このタイプのウォッチでは、オブジェクトは現在のフレームとスレッドに関係なく常に手元にあります。

ラベルの追加

  1. 変数タブで、追跡するオブジェクトを現在参照している変数またはウォッチを右クリックします。メニューからオブジェクトをマーク F11 を選択します。

  2. ラベルの名前を入力します。オプションで表示色を選択できます。この場合、Click to select color をクリックして色を選択します。構成が完了したら、「OK」をクリックします。

    Configure label name and color in the Select Object Label dialog

ラベルの除去

  • 削除するラベルを右クリックして、メニューからオブジェクトのマークを解除 F11 を選択します。

実行ポイント

現在の実行ポイントに戻る

プログラムの状態を調べるには、コード内を移動する必要があり、多くの場合、プログラムが中断されている場所に戻る必要があります。

以下のいずれか 1 つを実行します:

  • メインメニューで、実行 | デバッグアクション | 実行ポイントの表示に移動します。

  • Alt+F10 を押します。

  • デバッグツールウィンドウのステップツールバーで The Show Execution Point button をクリックします。

現在の実行ポイントは青い線で示されます。この行のコードはまだ実行されていません。

Blue line indicating the current execution point

関連ページ:

デバッガーセッションを開始する

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

デバッグツールウィンドウ

デバッガーセッションを開始すると、デバッグツールウィンドウが表示されます。このウィンドウを使用して、デバッガーセッションを制御し、プログラムデータ(フレーム、スレッド、変数など)を表示して分析し、さまざまなデバッガーアクションを実行します。これは、デバッグツールウィンドウの概要です。ツールウィンドウの使用に関する一般的な手順については、ツールウィンドウを参照してください。ツールウィンドウのタブを切り替えるには、とを押します。セッション:使用可能なデバッグセッションは、デバッグツールウィンド

ブレークポイント

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

ファイル、フォルダー、テキストソースを比較する

IntelliJ IDEA を使用すると、ファイル、フォルダー、テキストソース、データベースオブジェクト間の違い、ローカルファイルとそれらのリポジトリバージョン間の違いを確認できます。ファイルを比較:IntelliJ IDEA はファイルの差分ビューアーに差分を表示します: グリーン追加済みブルー変更グレー削除変更を適用するには、シェブロンボタン (および) を使用します。変更を追加するには、を押します。

JVM ヒープ内のオブジェクトを分析する

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

キーボードショートカットを設定する

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