Почему я не могу перетащить точку выполнения в IntelliJ (я могу в Visual Studio) - PullRequest
26 голосов
/ 21 июня 2009

В Visual Studio при отладке можно перетащить точку выполнения (указатель текущей инструкции, желтая точка) в другое место в текущем методе.

Это невозможно в IntelliJ, и некоторые утверждают, что это вообще невозможно в Java. Почему?

Ответы [ 4 ]

11 голосов
/ 21 июня 2009

IntelliJ взаимодействует с работающей JVM через стандартный интерфейс отладки Java, поэтому он может отлаживать программы на разных JDK. Это не поддерживает перемещение точки выполнения, как вы описали.

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

Примечание: это не откатит состояние объектов, поэтому могут возникнуть странные эффекты.

2 голосов
/ 21 июня 2009

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

Это очень полезно в сценарии отладки.

0 голосов
/ 21 июня 2009

Вы можете сказать отладчику «Run to line» вперед.

0 голосов
/ 21 июня 2009

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

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

...