Вы можете использовать команду Eclipse drop to frame, чтобы повторно ввести текущий метод сверху. Но он не будет разворачивать какие-либо произошедшие изменения состояния, поэтому он может не работать в зависимости от того, каким методом вы пользуетесь.
Еще один действительно крутой инструмент, который действительно позволяет вам делать шаг назад и вперед во времени, - это Omniscient Debugger . Он работает, инструментируя классы по мере их загрузки в загрузчик классов, поэтому он может записывать все, что делает ваш код. Он может делать очень крутые вещи, например, отвечать «когда, где и почему этому полю было присвоено его текущее значение?». Пользовательский интерфейс довольно неуклюжий, и ему может быть трудно обрабатывать большие базы кода, но в некоторых случаях это действительно может сэкономить много времени.
Обновление : Chronon предоставляет коммерческий продукт, который он описывает как «DVR для Java», который, похоже, выполняет те же функции, что и ODB.
Помимо того, что было упомянуто в более ранних ответах, например, функция перехода Eclipse в кадр в представлении отладки , которая перезапускает отладку раньше в кадре стека (но не возвращает глобальные / статические данные) и отладчик Omniscient , который немного сырой и не так много развивающиеся - есть несколько инструментов на основе Eclipse, которые можно использовать для «возврата» во время (выполнения):
JIVE расширяет отладчик Eclipse Java возможностью записи состояний программы. Перспектива JIVE предоставляет некоторые полезные диаграммы UML, которые обновляются во время работы программы. Эти диаграммы предоставляют обзор состояния приложения (диаграмма объектов) и трассировки стека (диаграмма последовательности). Вы можете запросить запомненную трассу и сделать шаг назад и вперед во времени и увидеть соответствующие диаграммы.
Diver записывает только вызовы методов и на самом деле не записывает состояния программы, такие как JIVE. Каждое событие вызова метода сохраняется для последующего извлечения и анализа. Он расширяет конфигурации Java Run и Debug в основном для определения фильтров. Трассировку можно приостановить / возобновить / отфильтровать во время выполнения. После записи перспектива Diver может отображаться на интерактивной диаграмме последовательности.
JIVE и Diver - это проекты с открытым исходным кодом, созданные в результате академических исследований. По состоянию на ноябрь 2012 года оба проекта активны.
Chronon - коммерческий продукт, но у них есть бесплатные лицензии для студентов и проектов с открытым исходным кодом. Судя по тому, что заявлено на их веб-сайте, это, вероятно, самый полный регистратор, поскольку он может воспроизводить записанную историю, шагать вперед и назад, позволяя, как говорится, отладку во времени. Также Eclipse не нужен для записи.
Все эти плагины довольно жадны в ресурсах, поэтому лучше иметь машину с хорошими спецификациями и использовать их функцию фильтрации. Определенным требованием для их успешного запуска является расширение кучи в eclipse.ini .
В моем случае я пытался использовать JIVE и Diver для отладки программы синтаксического анализа XML, но всегда останавливал eclipse из-за нехватки ресурсов. Diver может быть сложно запустить на 64-битной Linux , он работает на 32-битной Ubuntu и, возможно, в других 32- битных дистрибутивах, используя эти советы . Diver работает в Windows, а еще лучше - на 64-битной + 64-битной JVM Windows, в противном случае вы будете ограничены максимальным пространством кучи 1,3–1,6 ГБ в 32-битных окнах . JIVE отлично работает на моем 64-битном Linux и, кажется, отлично работает на других платформах.
источник
Да , Eclipse CDT поддерживает функцию исторического отладчика.
Откройте конфигурацию отладки -> Отладчик -> Включить обратную отладку при запуске .
Затем вы можете нажать
shift+F5
илиshift+F6
для шага назад, какF5
илиF6
для шага вперед.источник
Я предвзят, но Chronon делает именно то, что вы ищете.
Drop to Frame - это не совсем шаг назад, поскольку, если метод что-то изменил в куче, он не будет отменен.
источник
Я тоже искал эту функцию в eclipse. Я знаю, что визуальная студия может это сделать. На самом деле вы можете перетащить текущий маркер строки и вернуться в любое место кода. Я не совсем уверен, можно ли отменить изменения переменных. Но даже в этом случае он очень полезен и экономит много времени. Я очень долго ждал этого в затмении.
источник
В вопросе не указывается язык Eclipse, и многие ответы предполагают Java.
При использовании C ++ и GCC с отладчиком GDB у Eclipse есть тот,
Run->Move to Line
который выполняет эту работу, и функции, подобные оператору Set Next в Visual Studio . В этом случае Eclipse использует возможность, которая есть в GDB.Если вы используете Java, я не знаю, как это сделать с помощью Eclipse или Netbeans, хотя в других ответах предлагались плагины. В Eclipse есть команда "drop to frame", которая работает для Java в моей версии (Juno SR1). Если я изменяю и сохраняю код внутри функции в режиме отладки, строка выполнения автоматически перемещается в начало текущей функции, и я могу продолжить оттуда. Не то же самое, что указание строки, но это что-то.
источник