2013-07-04 1 views
18

Предположим, у меня есть Java код, как это (только в качестве примера):Как пропустить линию в отладке идеи Intellij?

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);»?

P.S. Я использую Intellij Idea 12.

+0

"' int a = b + 2; '" Может ли это скомпилировать? – johnchen902

ответ

22

Невозможно, чтобы отладчик не выполнял части кода.

Однако возможно выполнить дополнительный код и изменить значения для переменных, поэтому, если вам нужно исключить одну строку из выполнения во время отладки, вам придется изменить свой код, чтобы подготовиться к такой отладке.

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. Приостановка не проверяется
  2. Log вычисляемое выражение используется для изменения переменной, когда точка останова ударил
+1

Ничего себе, это невероятное решение.Какой хороший трюк, чтобы просто пропустить выполнение кода, также иметь его на производственном коде. –

+0

Можете ли вы также добавить горячую клавишу или путь для вызова этого окна? Это не ясно, где у вас есть это –

+0

Он перемещается. В 2016.2.5 я использую ctrl + f8, а затем ctrl + shift + f8 дважды, чтобы перейти к этому диалоговому окну. –

3

Вы не можете просто пропустить выполнение строки при отладке. Вы можете нажать F8 для перехода.

0

Невозможно пропустить ВЫПОЛНЕНИЕ линий в IntelliJ и даже в Eclipse. Единственное, что вы можете сделать, это сделать шаг вперед (F8), который будет отслеживать линию за строкой без , входящей в любую функцию.

Еще одна вещь - выйти (Shift + F8) - переход к следующей точке отладки непосредственно путем выполнения между строками в этом единственном шаге.

+1

№ «Программа возобновления» (F9) будет продолжаться до следующей точки останова. Step Out запускает текущий метод и останавливает отладчик, когда метод существует. –

3

Можно пропускать строки только в том случае, если вы используете hotswappi ng или добавить в другие слова инструмент перезагрузки кода - добавьте изменения кода/новый код во время выполнения. Hotswapping - это функции замены компонентов без выключения системы. Hotswapping также может ссылаться на возможность изменять текущий код программы без прерывания его выполнения.

Существуют различные hotswapping инструменты, такие как: JRebel (https://zeroturnaround.com/software/jrebel/) или HotSwapAgent (http://www.hotswapagent.org/)

Вы избежать необходимости восстановления всего приложения для перезагрузки изменения кода, это огромная экономия времени. Вместо того, чтобы запускать полный процесс сборки, просто используйте компилятор, встроенный в вашу среду IDE, и агент/инструмент hotSwap перезагрузит код в JVM.

В этом случае это не будет фактически пропущено, но вы можете просто прокомментировать/изменить линии и перезагрузить его. Эти инструменты довольно удивительные !!!! Это значительно ускоряет процесс разработки/отладки