Как вернуться в отладчик Eclipse?
можно ли выполнить обратное выполнение в отладчике Eclipse? Текущий проект, над которым я работаю, требует минимум 5 секунд для чтения и инициализации данных из файла, прежде чем что-либо можно сделать. Если я перехожу в отладчик, я должен завершить программу и перезагрузки, а это занимает довольно много времени.
6 ответов:
вы можете использовать Eclipse в падение в рамки команда для повторного ввода текущего метода сверху. Но он не будет разворачивать любые изменения состояния, которые произошли, поэтому он может не работать в зависимости от типа метода, в котором вы находитесь.
еще один очень классный инструмент, который позволит вам шаг назад и вперед во времени-это Всеведущий Отладчик. Он работает путем инструментирования классов по мере их загрузки в загрузчик классов, поэтому он может записывать все, что ваш код делает. Он может делать очень интересные вещи, такие как ответ "когда, где и почему этому полю было присвоено его текущее значение?". Пользовательский интерфейс довольно неуклюжий, и ему может быть трудно обрабатывать большие базы кода, но в некоторых случаях он действительно может сэкономить много времени.
обновление:Хронон предоставляет коммерческий продукт, который он описывает как" DVR для Java", который, похоже, делает много того же, что и ODB.
помимо того, что было упомянуто в предыдущих ответах - т. е. eclipse's drop to frame feature в debug view, который перезапускает отладку ранее в кадре стека (но не возвращает глобальные / статические данные) и Всеведущий отладчик, который немного сырой и не так сильно развивается - есть несколько инструментов на основе Eclipse, которые можно использовать для "возврата" во время (выполнения):
- JIVE: Интерактивная Визуализация Java Окружающая среда
- Хронон: "регистратор полетных данных" для Java-программ
- дайвер (снят с производства): Динамические Интерактивные Представления Для Обратной Инженерии
- Халик: пока только для IntelliJ, но перенос на Eclipse упоминается в дорожной карте.
JIVE расширяет отладчик Eclipse Java с возможностью записи состояний программы. Перспектива JIVE предоставляет некоторые полезные UML диаграммы, которые обновляются во время работы программы. Эти диаграммы предоставляют обзор состояния приложения (диаграмма объектов) и трассировки стека (диаграмма последовательностей). Вы можете запросить сохраненную трассировку и шаг назад и вперед во времени и увидеть соответствующие диаграммы.
Diver только записывает вызовы методов и на самом деле не записывает состояния программы, такие как JIVE. Каждое событие вызова метода сохраняется для последующего извлечения и анализа. Он расширяет Java Run и Debug конфигурации главным образом для того чтобы определить фильтры. Трассировка может быть приостановлена/возобновлена/отфильтрована во время выполнения. После записи перспектива дайвера может отображать ее в интерактивной диаграмме последовательности.
JIVE и Diver - это проекты с открытым исходным кодом, выпущенные из академических исследований. По состоянию на ноябрь 2012 года оба проекта являются активными.
Chronon является коммерческим продуктом, но у них есть бесплатные лицензии для студентов и проектов с открытым исходным кодом. Из того, что утверждается на их веб-сайте, это, вероятно, самый комплексный рекордер, поскольку он способен воспроизводить записанную историю, шаг вперед и назад, позволяя, как говорится, отлаживать время. Также затмение не требуется для записи.
все эти плагины довольно жадны в ресурсах, поэтому лучше иметь хорошую машину спецификации и использовать их функцию фильтра. Определенным требованием для их успешного запуска является расширить пространство кучи в eclipse.ini.
в моем случае я попытался использовать JIVE и Diver для отладки программа синтаксического анализа XML, но всегда заканчивалась замораживанием eclipse из-за нехватки ресурсов. Дайвер может быть сложно работать на linux 64bit, он работает на ubuntu 32bit и, возможно, других 32bit дистрибутивов с помощью эти советы. Diver работает на Windows, а еще лучше на Windows 64bit + 64bit JVM в противном случае вы будете ограничены максимальное пространство кучи 1,3-1,6 Гб на 32-битных окнах. JIVE отлично работает на моем linux 64bit и, похоже, отлично работает на других платформах.
да, Eclipse CDT имеет поддержку исторической функции отладчика.
открыть Настройки Отладка ->отладчик ->Включить Обратную Отладку при запуске .
чем вы можете нажать
shift+F5илиshift+F6на шаг назад, какF5илиF6для шага вперед.
я предвзят, но Хронон делает именно то, что вы ищете.
Drop to Frame точно не отступает, так как если метод что-то изменил в куче, он не будет возвращен.
Я тоже искал эту функцию в eclipse. Я знаю, что visual studio может это сделать. На самом деле вы можете перетащить текущую строку маркера и падение в любом месте обратно в коде. Я не совсем уверен, что изменения переменных могут быть отменены. Но это все еще очень полезно даже так и экономит много времени. Я ждал этого в eclipse очень долго.
в вопросе не указан язык Eclipse, и многие ответы предполагают Java.
при использовании C++ и GCC с отладчиком GDB Eclipse имеет
Run->Move to Lineкоторый выполняет эту работу и функционирует как Visual Studio Установить Следующий Оператор. В этом случае Eclipse использует возможность, которая находится в GDB.Если вы используете Java, я не знаю, как это сделать с Eclipse или Netbeans, хотя другие ответы предложили Плагины. Затмение имеет "падение к frame " команда, которая работает для Java в моей версии (Juno SR1). Если я изменяю и сохраняю код внутри функции в режиме отладки, строка выполнения автоматически перемещается в верхнюю часть текущей функции, и я могу продолжить оттуда. Не то же самое, что указать строку, но это что-то.
Comments