Как установить текущую строку выполнения в отладчике eclipse java? - PullRequest
31 голосов
/ 10 октября 2008

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

Ответы [ 5 ]

14 голосов
/ 10 октября 2008

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

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

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

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

11 голосов
/ 14 октября 2008

Я тоже давно искал эту функцию, и «Беги к линии» - это не то же самое.

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

2 голосов
/ 13 октября 2008

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

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

0 голосов

Запрос о том, что это невозможно

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

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

C / 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. */
}
0 голосов
/ 10 октября 2008

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

  1. Дважды щелкните крайнюю левую вертикальную полосу на исходной панели в той же строке, чтобы добавить точку останова; или
  2. Выберите линию и перейдите в Run> Toggle Breakpoint.

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

...