web-dev-qa-db-ja.com

Intellijアイデアデバッグで行をスキップする方法

私がJavaこのようなコードを持っていると仮定します(例としてのみ):

public void someMethod(){
    int a = 3;
    int b = 2; // <-- stay debug here
    a = b + 2;
    System.out.prinln(a);
}

「int a = b + 2;」行の実行をスキップすることができます。すぐに「System.out.prinln(a);」に移動しますか?

追伸Intellij Idea 12を使用しています。

29
Cherry

デバッガでは、コードの一部を実行しないようにすることはできません。

ただし、追加のコードを実行して変数の値を変更することは可能であるため、デバッグ中に1行を実行から除外する必要がある場合は、コードを変更してその種類のデバッグの準備をする必要があります。

public void someMethod() {
    int a = 3;
    int b = 2;
    boolean shouldRun = true;
    if (shouldRun) {
        a = b + 2;
    }
    System.out.prinln(a);
}

次に、実行を停止せずにshouldRunの値を変更するブレークポイントを設定します。このようにできます。

enter image description here

ご了承ください

  1. Suspendはチェックされません
  2. ログ評価式は、ブレークポイントに達したときに変数を変更するために使用されます
28

ホットスワッピングを使用する場合、つまりコード再読み込みツールを使用する場合にのみ、行をスキップできます-実行時にコード変更/新しいコードを追加します。ホットスワップは、システムをシャットダウンせずにコンポーネントを交換する機能です。ホットスワップとは、プログラムの実行を中断することなく、プログラムの実行中のコードを変更する機能を指します。

JRebel( https://zeroturnaround.com/software/jrebel/ )またはHotSwapAgent( http://www.hotswapagent.org/ )など、さまざまなホットスワップツールがあります。

コードの変更をリロードするためにアプリケーション全体を再構築する必要がなくなります。これにより、時間を大幅に節約できます。完全なビルドプロセスを実行する代わりに、IDEに組み込まれたコンパイラを使用するだけで、hotSwapエージェント/ツールがコードをJVMに再ロードします。

この場合、実際にはスキップされませんが、行をコメント/変更してリロードできます。このツールはかなり素晴らしいです!!!!開発/デバッグプロセスを大幅にスピードアップ

5
ntotomanov

デバッグ時に「行の実行」をスキップすることはできません。 F8キーを押すと、ステップオーバーできます。

4
StKiller

IntelliJやEclipseでさえ、行の実行をスキップすることはできません。あなたができる唯一のことは、あなたがステップオーバー(F8)をすることができることです-これは関数の中に入ることなく行ごとにトレースします。

もう1つは、ステップアウト(Shift + F8)です。これは、その単一ステップの行間で実行することにより、次のデバッグポイントに直接移動します。

0
Chandu