IntelliJ IDEA 2020.2 ヘルプ

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

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

IntelliJ IDEA は、戦略に応じて使用される一連のステップアクションを提供します(たとえば、次の行に直接移動するか、途中で呼び出されたメソッドを入力する必要があるかなど)。

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

Stepping buttons in the Debug tool window

ステップオーバー

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

  • ステップオーバーボタンStep Over buttonをクリックするか、F8 を押します。

この例では、5 行目が実行されようとしています。ステップオーバーすると、デバッガーは doCount() メソッドにジャンプすることなく、6 行目に直接移動します。

Stepping over a method call

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

Step over took us to the next line of code

ステップイン

メソッドにステップインして、その内部で何が起こるかを示します。このオプションは、メソッドが正しい結果を返していることが確実でない場合に使用します。

  • ステップインボタンStep Into buttonをクリックするか、F7 を押します。

この例では、5 行目が実行されようとしています。ステップインすると、デバッガーは count(int to) メソッドの実装にジャンプし、その結果がどのように生成されるかを詳細に調べることができます。

Stepping in a method

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

Inside the method

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

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

スマートステップイン

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

  1. メインメニューから実行 | デバッグアクション | スマートステップインを選択するか Shift+F7 を押します。

  2. メソッドをクリックします。矢印キーまたはタブを使用して選択し、Enter / F7 を押すこともできます。

    Smart Step into lets you decide which method to enter

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

ステップアウト

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

  • ステップアウトボタンStep Out buttonをクリックするか、Shift+F8 を押します。

この例では、ステップアウトするとループのすべての反復がスキップされ、main メソッド(呼び出し元)に直接移動します。

Step out continues the execution until the method is complete

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

現在実行されているコードブロックからステップアウトします。これにより、含まれているメソッドを終了せずに、while , for の残りの反復をスキップできます。

  • メインメニューから実行 | デバッグアクション | コードブロックのステップアウトを選択します。

この例では、アクションによって for ループが終了し、12 行目に移動します。ループは実行され、出力は、反復ごとにステップ実行したかのようにコンソールに表示されます。

Steps out of the for loop but not the method

カーソル位置まで実行

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

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

  2. カーソル位置まで実行ボタンRun to Cursor buttonをクリックするか、Alt+F9 を押します。

また、ガターの行番号をクリックしてカーソル位置まで実行を実行できます。

Run to Cursor with a single click

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

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

Caret is in the piece of code where we want to go

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

強制的にステップイン

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

  • 強制的にステップインボタンForce Step Into iconをクリックするか、Alt+Shift+F7 を押します。

この例では、System.out.println() を呼び出しようとしている行の直前で実行が中断されます。

Force step into disregards the list of ignored classes

強制的にステップインを使用すると、System.out.println() メソッドの実装にすぐにジャンプできますが、通常のステップインでは 20 行目になります。

Inside println()

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

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

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

  2. メインメニューから実行 | デバッグアクション | 強制的にカーソル位置まで実行を選択するか Ctrl+Alt+F9 を押します。

この例では、強制的にカーソル位置まで実行は実行を継続し、ブレークポイントがあるかのように 7 行目で停止します。 count() 内のブレークポイントは効果がありません。

Caret is in the piece of code where we want to go

強制的にステップオーバー

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

  • メインメニューから実行 | 強制的にステップオーバーを選択するか Alt+Shift+F8 を押します。

この例では、count() メソッドにブレークポイントがある場合でも、ステップオーバーすると 6 行目の print ステートメントに移動します。そうしないと、ループのすべての反復でアプリケーションが中断されます。

The breakpoint in the called method is going to be ignored

フレームにドロップ

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

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

  • フレームにドロップボタンDrop Frame buttonをクリックします。

この例では、フレームをドロップすると、count が実行されたことがないかのように呼び出し元メソッドに戻ります。

Drop frame undoes the current frame as if the method has not been executed

影響を受けた静的変数またはインスタンス変数はありませんが、コンソール出力は残ります。

0 1 2

ステップ速度を改善する

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

最終更新日 :

関連ページ:

デバッガーのオーバーヘッドを監視する

式を評価するか、コードをステップオーバーするたびに、IntelliJ IDEA はデバッグされるアプリケーションと同じリソースを使用します。これにより、特定の場合に全体的なパフォーマンスに劇的な影響を与える可能性があります。例:条件が重いブレークポイントは、コード行の補完に必要な時間を大幅に増やす可...

ブレークポイント

ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、単純な場合(たとえば、コード行に到達したときにプログラムを一時停止する場合)や、より複雑なロジック(追加の条件に対するチェック、ログメッ...

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

デバッガーセッションを開始すると、デバッグツールウィンドウが表示されます。このウィンドウを使用して、デバッガーセッションを制御し、プログラムデータ(フレーム、スレッド、変数など)を表示して分析し、さまざまなデバッガーアクションを実行します。これは、デバッグツールウィンドウの概要です。ツールウィンドウ...

ビューのカスタマイズ

デバッグセッション中に、変数、クラス、スレッド、フレームなどに関する情報を取得します。プロジェクトによっては、さまざまな詳細を表示したり、さまざまな形式でデータを表示したりできます。このため、IntelliJ IDEAは、デバッガーでのデータの表示方法をカスタマイズできる一連のオプションを提供します...