IntelliJ IDEA 2026.1 Help

プログラムのステップスルー

ステップは、プログラムの段階的な実行を制御するプロセスです。

デバッグセッションを 開始しプログラムを一時停止すると、IntelliJ IDEA は一連のステップアクションを提供します。 ステップアクションの選択は、次の行に直接移動する必要があるか、中間のメソッド呼び出しも インスペクションする必要があるかなど、戦略によって異なります。

ステップボタンは、 デバッグ ツールウィンドウの ツールバーにあります。

デバッグツールウィンドウのステップボタン

ステップオーバー

現在のコード行をステップオーバーし、ハイライトされた行にメソッド呼び出しが含まれている場合でも、次の行に移動します。 メソッドの実装はスキップされ、呼び出し元メソッドの次の行に直接移動します。

public static void main(String[] args) { // the program is suspended here count(10); System.out.printIn("Count complete!"); }

この例では、5 行目が実行されようとしています。 ステップオーバーすると、デバッガーは count() メソッドにアクセスせずに 6 行目に直接移動します。

public static void main(String[] args) { count(10); // execution point moves here after Step Over System.out.printIn("Count complete!"); }

スキップされたメソッド内にブレークポイントがある場合、デバッガーはそれらで停止します。 途中でブレークポイントをスキップするには、 強制ステップオーバー

ステップイン

メソッドに入り、その内部で何が起こるかを表示します。

public static void main(String[] args) { // the program is suspended here count(10); System.out.printIn("Count complete!"); }
private static void count(int to) { // after Step Into, the program enters the count() method and for (int i = 0; i < 10; i++) { System.out.println(i); } }

回線上に複数のメソッド呼び出しがある場合、IntelliJ IDEA は入力するメソッドを確認します。 この機能は スマートステップインと呼ばれます。

回線に複数のメソッド呼び出しがあるたびに スマートステップイン が自動的に使用されるように構成できます。 または、 明示的にそうした場合にのみ呼び出すことができます。 この機能を構成するには、 設定 | ビルド、実行、デプロイ | デバッガー | ステップ に移動し、必要に応じて 常にスマートステップインする オプションを設定します。

一部のメソッド (たとえば、 System などの標準 Java クラスのメソッド) は、通常はデバッグする必要がないため、 ステップイン によってスキップされます。 このリストは、 設定 ダイアログ (Ctrl+Alt+S) の ビルド、実行、デプロイ | デバッガー | ステップ実行中 ページで微調整できます。

スマートステップイン

スマートステップインは、1 行に複数のメソッド呼び出しがあり、どのメソッドに入るかについて具体的に知りたい場合に役立ちます。 この機能により、目的のメソッド呼び出しを選択できます。

  1. メニューから スマートステップイン を選択するか、 Shift+F7 を押します。

  2. メソッドをクリックします。 または、矢印キーまたは Tab キーを使用してメソッドを選択し、 Enter または F7 を押して選択を確定します。

    Smart Step into では、入力する方法を決定できます

回線で複数のメソッド呼び出しがあるたびに、通常の ステップイン(I) の代わりに スマートステップイン(P) を使用するように構成できます。 これは 設定 | ビルド、実行、デプロイ | デバッガー | ステップ で行われます。

ステップアウト

現在のメソッドから抜け出し、呼び出し元のメソッドに移動します。

private static void count(int to) { // the program is suspended here for (int i = 0; i < 10; i++) { System.out.println(i); } }
public static void main(String[] args) { count(10); // after Step Out, the program exits the count() method System.out.printIn("Count complete!"); }

コードブロックのステップアウト

囲んでいるメソッドを終了せずに、 if ステートメントや for ループなどの現在実行中のコードブロックからステップアウトします。

static void count(int to) { for (int i = 0; i < to; i++) { // the program is suspended here System.out.println(i); } System.out.println("Complete!"); }

この例では、アクションは for ループを終了します。 ループは実行され、各反復をステップ実行したかのようにすべての数値がコンソールに出力されることに注意してください。

static void count(int to) { for (int i = 0; i < to; i++) { System.out.println(i); } // Step Out of Code Block takes us here System.out.println("Complete!"); }

カーソル位置まで実行

キャレットの位置に達するまで実行を継続します。

  1. プログラムを一時停止する行にキャレットを置きます。

  2. メニューから カーソル位置まで実行 を選択するか、 Alt+F9 を押します。

また、線の上にマウスを移動して カーソル位置まで実行(C) アイコンをクリックすると、 カーソル位置まで実行(C) を実行できます。

ワンクリックでカーソルまで実行

カーソル位置まで実行(C)設定 | ビルド、実行、デプロイ | デバッガー の行番号をクリックする際に動作するかどうかを構成できます。

この例では、 カーソル位置まで実行 は実行を継続し、ブレークポイントがあったかのように count() メソッドの後に停止します。 スキップされたコードに実際のブレークポイントがある場合は、プログラムはそこに到達すると中断されます。

途中でブレークポイントをスキップするには、 カーソル位置まで強制実行を使用します。

マルチスレッド実行の場合、 カーソル位置まで実行 は現在のスレッドまたはコルーチンでのステップ実行中を維持しようとします。 別のスレッドが元のスレッドより先にターゲット行に到達した場合、IntelliJ IDEA は後から到達したスレッドを保留し、元のスレッドが追いつくまで 1 秒待機します。 タイムアウト後、IntelliJ IDEA はその後のスレッドでプログラムを一時停止し、その旨を通知します。 複数のスレッドまたはコルーチンがその到達先に達した場合、 カーソル位置まで実行 はデフォルトで現在のスレッドを待機し、先に一時停止されたスレッドの実行を再開します。

カーソルまで実行で実行時間を測定

カーソル位置まで実行 を使用すると、スキップされたコード箇所の実行時間が記録され、各行にラベルがガターへ追加されます。 ラベル を使用してメソッドの実装へ移動できます。その行にも同じ型の パフォーマンス ラベル が付与されます。

エディターのガターでのパフォーマンス統計

この機能をオフにするには、ラベルを右クリックして カーソル位置まで実行で時間の記録を無効にする を選択します。

強制ステップイン

このメソッドが通常の ステップイン によって スキップされた場合でも、メソッドのステップ。

static void count(int to) { for (int i = 0; i < to; i++) { // the program is suspended here System.out.println(i); } System.out.println("Complete!"); }

この例では、 System.out.println() メソッドの実装に直接移動しますが、通常の ステップイン はループの次の反復に進みます。

public void println(String x) { // Force Step Into enters the implementation of PrintStream.println() if (getClass() == PrintStream.class) { writeln(String.valueOf(x)); } else { synchronized (this) { print(x); newLine(); } } }

カーソル位置まで強制実行

キャレットの位置に到達するまで 実行し続けます。 途中のブレークポイントはすべて無視されます。

  1. プログラムを一時停止する行にキャレットを置きます。

  2. メニューから カーソル位置まで強制実行 を選択するか、 Ctrl+Alt+F9 を押します。

強制ステップオーバー

ステップオーバーは、現在のコード行をスキップして、現在の行にメソッド呼び出しが含まれている場合でも次の行に移動します。 呼び出されたメソッドにブレークポイントがある場合は無視されます。

フレームのリセット

最後のフレームを元に戻し、スタック内の前のフレームを復元できます。 これは、たとえば、誤って足を踏みすぎた場合や、クリティカルスポットを逃した機能を再入力したい場合に便利です。

このオプションはローカル変数にのみ影響し、静的およびインスタンス変数の値を元に戻さないため、プログラム全体の状態は復元されないことに注意してください。 これにより、プログラムフローが変更される可能性があります。

  • スレッド タブで、リセットするフレームにマウスを移動し、表示される フレームのリセット ボタンをクリックします。

    スレッドタブのフレームリセットボタン
public static void main(String[] args) { count(10); System.out.println("Count complete!"); } private static void count(int to) { for (int i = 0; i < to; i++) { // the program is suspended here System.out.println(i); } }

この例では、フレームをドロップすると、 count が実行されなかったかのように main() に戻ります。 影響を受ける静的変数やインスタンス変数はありませんが、すでに生成されていて副作用と見なすことができるコンソール出力はそのまま残ります。

public static void main(String[] args) { // Reset Frame returns the execution to the line preceding the last method call count(10); System.out.println("Count complete!"); } private static void count(int to) { for (int i = 0; i < to; i++) { System.out.println(i); } }

スキップされたブレークポイントのトラブルシューティング

IntelliJ IDEA は、次の状況ではブレークポイントをスキップすることがあります。

  • カーソル位置まで実行 のステップ実行または実行中に、別のスレッドでブレークポイントがヒットしました。

  • 自動式や監視などの機能によって評価されたコードブロック内でブレークポイントがヒットしました。

デバッグセッションにとって重要なブレークポイントでこの問題が発生した場合は、IntelliJ IDEA がブレークポイントを見逃さないように次の手順を実行します。

ステップ速度を改善する

デバッガー機能はリソースを消費し、ステップのパフォーマンスに影響を与える可能性があります。 パフォーマンスが十分でない場合は、この章に記載されている推奨事項に従って最適化してください。

  • オーバーヘッド機能を使用して、パフォーマンス低下の原因を特定します。

  • 次の機能がプロジェクトに必要ない場合は、使用を無効化または最小化します。

    • メソッドブレークポイントとフィールドウォッチポイント

    • メソッド戻り値の表示 オプション。 デバッガーのツールバーの 詳細 | デバッガー設定 からアクセスできます。

    • コレクションクラスの代替ビュー オプション (設定 | ビルド、実行、デプロイ | デバッガー | データビュー | Java)

    • 「toString」オブジェクトビュー (設定 | ビルド、実行、デプロイ | デバッガー | データビュー | Java)

  • ブレークポイントとウォッチポイントの条件、特に頻繁にヒットするものを単純化します。

  • デバッグセッション中に、より少ない要素でビューに切り替えます。

ステップ動作を構成する

  • Ctrl+Alt+S を押して設定を開き、 ビルド、実行、デプロイ | デバッガー | ステップ を選択します。

オプション

説明

合成メソッドをスキップする

このチェックボックスを選択すると、デバッグ中に合成メソッド(コンパイラーによって生成されたメソッド)にステップインしないようにします。

コンストラクターをスキップする

このチェックボックスを選択すると、デバッグ中にコンストラクターにステップインしないようにします。

クラスローダーをスキップする

デバッグ中にクラスローダーにステップインしないようにするには、このチェックボックスを選択します。

単純な getter はスキップする

デバッグ中に単純な getter メソッド(つまり、必要な値を返すように設計されたメソッド)へのステップインを抑制するためにこのチェックボックスを選択します。

クラスにステップインしない

デバッグ中に指定されたクラスにステップインしないようにするには、このチェックボックスを選択します。 クラスのリストには、次の 2 つのタイプのエントリが含まれます。

  • 完全修飾クラス名。

  • 正規表現(完全一致または "*" で始まるまたは終わるパターン、たとえば java.*)。

デフォルトでは、このリストにはいくつかの標準 Java SDK クラスパターンが含まれているため、Java クラスライブラリに時間を浪費する必要はありません。 特定のパターンを一時的に無効 / 有効にするには、リストのチェックボックスを使用します。

Add classAdd pattern除去 ボタンを使用してリストを管理します。

最終的にポップフレームのブロックを評価する

ポップフレームで finally ブロックを評価するかどうか、評価する前に通知を受けたいかどうかを選択します。

現在のスレッドのみ再開

ステップするときにアクティブなスレッドのみを再開する必要がある場合は、このチェックボックスを選択します。

2026 年 3 月 30 日