IntelliJ IDEA 2024.1 ヘルプ

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

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

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

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

Stepping buttons in the Debug tool window

ステップオーバー

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

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

この例では、5 行目が実行されようとしています。ステップオーバーすると、デバッガーは count() メソッドに移動することなく、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

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

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

  • メインメニューで、実行 | デバッグアクション | コードブロックのステップアウトに移動します。

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

Steps out of the for loop but not the method

カーソル位置まで実行

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

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

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

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

Run to Cursor with a single click

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

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

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

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

強制ステップイン

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

  • メニューから強制ステップインを選択するか、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

フレームのリセット

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

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

  • リセットするフレームにカーソルを合わせ、表示されるフレームのリセットボタンをクリックします。

    Reset frame button

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

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

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

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

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

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

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

ステップ速度を改善する

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

ステップ動作を構成する

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

  2. 必要に応じてステップ動作を構成します。特定のオプションの詳細については、以下の表を参照してください。

オプション

説明

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

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

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

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

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

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

単純な getter はスキップする

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

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

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

  • 完全修飾クラス名。

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

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

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

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

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

現在のスレッドのみ再開

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

関連ページ:

ブレークポイント

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

ビューのカスタマイズ

デバッグセッション中に、IntelliJ IDEA は変数、クラス、スレッド、フレームなどに関する情報を表示します。さらに、デバッガーは、プロジェクトのニーズに応じてデータの表示をカスタマイズするためのさまざまなオプションを提供します。デフォルトでは、IntelliJ IDEA は、デバッグツールウィンドウにデバッグの詳細を整理した包括的なビューを表示します。このレイアウトでは、最も一般的に使用されるオプションとアクションが提供されます。ただし、特定の詳細を調べたり、データをフィルタリングしたり...

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

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

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

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