Подтвердить что ты не робот

Как установить текущую строку выполнения в java-отладчике eclipse?

Я хочу принудить текущую строку выполнения к определенной строке в той же функции, возможно, пропуская промежуточные строки. Все мои старые школьные отладчики имели эту функцию, но я не могу найти ее в eclipse. Есть ли способ сделать это без изменения кода?

4b9b3361

Ответ 1

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

Мое понимание, функция, которую я искал, заключается в том, что вы хотите пропустить несколько строк (при поступлении кода) и установить счетчик программ (чтобы получить сборный словарь) к данной строке. Может быть интересно пропустить некоторое дорогостоящее создание объекта, увидеть некоторые ситуации с ошибками и т.д. Я использовал это в Visual Studio (код C или С++).

Я не нашел это в Eclipse, ни в NetBean. Это может быть ограничение JVM или принудительное исполнение какой-либо политики...

Команда Run to line выполняет, конечно, все строки между текущей исполняемой позицией и назначенной.

Ответ 2

Я тоже давно искал эту функцию, а "Run to line" - это не одно и то же.

Это вполне может быть ограничением JVM. Java не реализует goto, хотя в нем есть инструкции перехода, такие как break и continue. Тем не менее, они находятся на уровне блоков. Если это ограничение JVM, я предполагаю, что это скорее связано с архитектурой безопасности. Тесное управление программным счетчиком является изнурительным для нарушителей, таких как вирусы - и, к сожалению, отладчиков.

Ответ 3

Я думаю, что это невозможно в Java. Единственная функция, которая позволяет вам "отступить", - это "drop to frame", которая возвращает вас к первой инструкции текущего кадра. По крайней мере, я не видел отладчика с этой конкретной функциональностью, но я не смог найти в сети, почему это так...

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

Ответ 4

Запрос функции, говорящий, что это невозможно

В https://bugs.eclipse.org/bugs/show_bug.cgi?id=287795 (credits для Amitd) Дарин Райт говорит, что это ограничение основного отладчика Java:

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

C/С++

CDT поддерживает его, однако (тестируется на Neon, Ubuntu 14.04). Щелкните правой кнопкой мыши по строке, в которую вы хотите перейти, и выберите либо:

  • "Переместить в линию": перейдите к строке и перерыв там
  • "Возобновить в строке": перейти к строке и продолжить выполнение оттуда

Это также служит еще одним доказательством того, что существует основное ограничение Java, поскольку Java, как правило, больше функциональна в Eclipse, и эти записи меню отсутствуют в Java рядом с "Run to line" (который не пропускает выполнение линий).

Эта тестовая программа печатает 0, если вы переходите к строке i = 1:

#include <stdio.h>

int main(void) {
    int i;
    i = 0; /* Break here. */
    i = 1;
    printf("%d\n", i); /* Jump to here. */
}

Ответ 5

Кажется, что для запуска программы "Run to line" необходимо запустить программу и использовать ее в состоянии паузы. Другой вариант - установить контрольную точку для этой строки при запуске в режиме отладки.

  • Дважды щелкните левую верхнюю вертикальную панель в исходной панели в той же строке, чтобы добавить точку останова; или,
  • Выберите строку и выберите "Выполнить" > "Переключить точку останова".

По крайней мере, это в Eclipse 3.3.2.