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

ステップオーバー
現在のコード行をステップオーバーし、ハイライトされた行にメソッド呼び出しが含まれている場合でも、次の行に移動します。メソッドの実装はスキップされ、呼び出し元メソッドの次の行に直接移動します。
この例では、5 行目が実行されようとしています。ステップオーバーすると、デバッガーは count() メソッドにアクセスせずに 6 行目に直接移動します。
スキップされたメソッド内にブレークポイントがある場合、デバッガーはそれらで停止します。途中でブレークポイントをスキップするには、強制ステップオーバーを使用します。
ステップイン
メソッドに入り、その内部で何が起こるかを表示します。
回線上に複数のメソッド呼び出しがある場合、IntelliJ IDEA は入力するメソッドを確認します。この機能はスマートステップインと呼ばれます。
回線に複数のメソッド呼び出しがあるたびにスマートステップインが自動的に使用されるように構成できます。または、明示的にそうした場合にのみ呼び出すことができます。この機能を構成するには、に移動し、必要に応じて常にスマートステップインするオプションを設定します。
一部のメソッド (たとえば、System などの標準 Java クラスのメソッド) は、通常はデバッグする必要がないため、ステップインによってスキップされます。このリストは、設定ダイアログ (Ctrl+Alt+S) のページで微調整できます。
スマートステップイン
スマートステップインは、1 行に複数のメソッド呼び出しがあり、どのメソッドに入るかについて具体的に知りたい場合に役立ちます。この機能により、目的のメソッド呼び出しを選択できます。
メニューからスマートステップインを選択するか、Shift+F7 を押します。
メソッドをクリックします。または、矢印キーまたは Tab キーを使用してメソッドを選択し、Enter または F7 を押して選択を確定します。

回線で複数のメソッド呼び出しがあるたびに、通常のステップインの代わりにスマートステップインを使用するように構成できます。これはで行われます。
ステップアウト
現在のメソッドから抜け出し、呼び出し元のメソッドに移動します。
コードブロックのステップアウト
囲んでいるメソッドを終了せずに、if ステートメントや for ループなどの現在実行中のコードブロックからステップアウトします。
この例では、アクションは for ループを終了します。ループは実行され、各反復をステップ実行したかのようにすべての数値がコンソールに出力されることに注意してください。
カーソル位置まで実行
キャレットの位置に達するまで実行を継続します。
プログラムを一時停止する行にキャレットを置きます。
メニューからカーソル位置まで実行を選択するか、Alt+F9 を押します。
また、線の上にマウスを移動してカーソル位置まで実行アイコンをクリックすると、カーソル位置まで実行を実行できます。

カーソル位置まで実行がの行番号をクリックする際に動作するかどうかを構成できます。
この例では、カーソル位置まで実行は実行を継続し、ブレークポイントがあったかのように count() メソッドの後に停止します。スキップされたコードに実際のブレークポイントがある場合は、プログラムはそこに到達すると中断されます。
途中でブレークポイントをスキップするには、カーソル位置まで強制実行を使用します。
マルチスレッド実行の場合、カーソル位置まで実行は現在のスレッドまたはコルーチンでステップ実行を継続しようとします。別のスレッドが元のスレッドより先にターゲット行に到達した場合、IntelliJ IDEA は後のスレッドを保留し、元のスレッドが追いつくまで 1 秒間待機します。タイムアウト後、IntelliJ IDEA はその後のスレッドでプログラムを一時停止し、その旨を通知します。さらに別のスレッドまたはコルーチンがターゲット行に到達した場合、カーソル位置まで実行はデフォルトで現在のスレッドを待機し、先に一時停止されていたスレッドを再開します。
カーソルまで実行で実行時間を測定
カーソル位置まで実行を使用すると、スキップされたコードフラグメントの実行時間が記録され、ガター内の各行にラベルが付けられます。ラベルを使用してメソッドの実装に移動できます。その行にも同じタイプのパフォーマンスラベルが付けられます。

この機能をオフにするには、ラベルを右クリックしてカーソル位置まで実行で時間の記録を無効にするを選択します。
強制ステップイン
このメソッドが通常のステップインによってスキップされた場合でも、メソッドのステップ。
この例では、System.out.println() メソッドの実装に直接移動しますが、通常のステップインはループの次の反復に進みます。
カーソル位置まで強制実行
キャレットの位置に到達するまで処刑を続行するを実行します。途中のブレークポイントはすべて無視されます。
プログラムを一時停止する行にキャレットを置きます。
メニューからカーソル位置まで強制実行を選択するか、Ctrl+Alt+F9 を押します。
強制ステップオーバー
ステップオーバーは現在のコード行を終了し、現在の行にメソッド呼び出しが含まれている場合でも次の行に移動します。呼び出されたメソッドにブレークポイントがある場合は無視されます。
フレームのリセット
最後のフレームを元に戻し、スタック内の前のフレームを復元できます。これは、たとえば、誤って足を踏みすぎた場合や、クリティカルスポットを逃した機能を再入力したい場合に便利です。
このオプションはローカル変数にのみ影響し、静的およびインスタンス変数の値を元に戻さないため、プログラム全体の状態は復元されないことに注意してください。これにより、プログラムフローが変更される可能性があります。
スレッドタブで、リセットするフレームにマウスを移動し、表示されるフレームのリセットボタンをクリックします。

この例では、フレームをドロップすると、count が実行されなかったかのように main() に戻ります。影響を受ける静的変数やインスタンス変数はありませんが、すでに生成されていて副作用と見なすことができるコンソール出力はそのまま残ります。
スキップされたブレークポイントのトラブルシューティング
IntelliJ IDEA は、次の状況ではブレークポイントをスキップすることがあります。
カーソル位置まで実行のステップ実行または実行中に、別のスレッドでブレークポイントがヒットしました。
自動式や監視などの機能によって評価されたコードブロック内でブレークポイントがヒットしました。
デバッグセッションにとって重要なブレークポイントでこの問題が発生した場合は、IntelliJ IDEA がブレークポイントを見逃さないように次の手順を実行します。
現在のスレッドを一時停止するだけのブレークポイントからステップまたはカーソル位置まで実行を実行します。
次の機能をオフにします。
ステップ速度を改善する
デバッガー機能はリソースを消費し、ステップのパフォーマンスに影響を与える可能性があります。パフォーマンスが十分でない場合は、この章に記載されている推奨事項に従って最適化してください。
オーバーヘッド機能を使用して、パフォーマンス低下の原因を特定します。
次の機能がプロジェクトに必要ない場合は、使用を無効化または最小化します。
メソッド戻り値の表示オプション。デバッガーのツールバーのからアクセスできます。
Collections クラスの代替ビューオプション ()
「toString」オブジェクトビュー ()
ブレークポイントとウォッチポイントの条件、特に頻繁にヒットするものを単純化します。
デバッグセッション中に、より少ない要素でビューに切り替えます。
ステップ動作を構成する
Ctrl+Alt+S を押して設定を開き、を選択します。
オプション | 説明 |
|---|---|
合成メソッドをスキップする | このチェックボックスを選択すると、デバッグ中に合成メソッド(コンパイラーによって生成されたメソッド)にステップインしないようにします。 |
コンストラクターをスキップする | このチェックボックスを選択すると、デバッグ中にコンストラクターにステップインしないようにします。 |
クラスローダーをスキップする | デバッグ中にクラスローダーにステップインしないようにするには、このチェックボックスを選択します。 |
単純な getter はスキップする | デバッグ中に単純な getter メソッド(つまり、必要な値を返すように設計されたメソッド)へのステップインを抑制するためにこのチェックボックスを選択します。 |
クラスにステップインしない | デバッグ中に指定されたクラスにステップインしないようにするには、このチェックボックスを選択します。クラスのリストには、次の 2 つのタイプのエントリが含まれます。
デフォルトでは、このリストにはいくつかの標準 Java SDK クラスパターンが含まれているため、Java クラスライブラリに時間を浪費する必要はありません。特定のパターンを一時的に無効 / 有効にするには、リストのチェックボックスを使用します。 |
最終的にポップフレームのブロックを評価する | ポップフレームで |
現在のスレッドのみ再開 | ステップするときにアクティブなスレッドのみを再開する必要がある場合は、このチェックボックスを選択します。 |
関連ページ:
デバッガーセッションを開始する
デバッガーセッションの開始は、プログラムを通常モードで実行するのと非常によく似ています。デバッガーはバックグラウンドで接続されているため、デバッガーセッションを開始するために特別な設定を行う必要はありません。IntelliJ IDEA からプログラムを実行できる場合は、同じ構成を使用してプログラムをデバッグすることもできます。プログラムをデバッグするたびに、デバッガーセッションは実行 / デバッグ構成に基づきます。これにより、アプリケーションを起動するためのパラメーターとアクションを構成できます...
ブレークポイント
ブレークポイントは、特定のポイントでプログラムの実行を一時停止する特別なマーカーです。これにより、プログラムの状態と動作を調べることができます。ブレークポイントは、たとえば、特定のコード行に到達したときにプログラムを一時停止するなどの単純なものから、追加の条件をチェックしたり、ログに書き込んだりするなどのより複雑なロジックを含むものまであります。ブレークポイントは、一度設定すると、一時的なブレークポイントを除き、明示的に削除するまでプロジェクト内に残ります。ブレークポイントの種類:Intell
中断されたプログラムを調べる
デバッガーセッションが開始されると、デバッグツールウィンドウが表示され、次のいずれかが発生するまでプログラムが正常に実行されます。ブレークポイントがヒットしました、プログラムを手動で一時停止する、その後、プログラムは中断され、現在の状態を調べたり、実行を制御したり、実行時にさまざまなシナリオをテストしたりできます。フレームを調べる:プログラムの状態はフレームで表されます。プログラムが一時停止すると、現在のフレームスタックがデバッグツールウィンドウのフレームタブに表示されます。フレームはアクティ
デバッグツールウィンドウ
デバッガーセッションを開始すると、デバッグツールウィンドウが開きます。このウィンドウを使用して、デバッガーセッションを制御し、プログラムデータ (フレーム、スレッド、変数など) を表示および分析し、デバッガーアクションを実行します。デフォルトでは、プログラムがブレークポイントに到達したときにデバッグツールウィンドウが開き、セッションが終了しても非表示になりません。この動作を変更するには、ビルド、実行、デプロイ | デバッガー設定ページに移動し、ブレークポイントでデバッグウィンドウを表示するチェ...
プロファイラーのスナップショットを読む
IntelliJ プロファイラー構成で作成されたスナップショットは、次のモードで表示できます。CPU 時間 – IO、ロック待機、コンテキスト切り替えなどを除く、実際の CPU 作業に対応するサンプルのサブセット。アルゴリズムの複雑さの改善などの最適化から最大限のメリットを得ることができる、CPU 集中型のセクションを特定できます。合計時間 – スリープ状態のスレッドのサンプルを含むすべてのサンプル。このモードは、IO、コンテキスト切り替えオーバーヘッド、同期などを含む、知覚されるパフォーマンスと実...
ビューのカスタマイズ
デバッグセッション中、IntelliJ IDEA は変数、型、スレッド、フレームなどの情報を表示します。ただし、特定のランタイムの詳細に焦点を当て、データをフィルター処理したり、特定の形式でレンダリングしたりすることもできます。このシナリオでは、IntelliJ IDEA を使用すると、デバッガーの出力がデバッグツールウィンドウとエディターに表示される方法をカスタマイズできます。スレッドビューをカスタマイズする:フレームタブとスレッドタブでのスレッドの表示方法をカスタマイズできます。アプリケー...