Как сделать двунаправленную или обратную отладку программ? - PullRequest
15 голосов
/ 07 февраля 2009

Кто-нибудь использовал реверсивный отладчик? Единственный продукт, который показывает Google, - UndoDB . Это, по-видимому, только для Linux.

Ответы [ 11 ]

8 голосов
/ 08 октября 2009

Последняя версия GDB 7.0 (выпущенная на этой неделе) поддерживает обратную отладку на ряде платформ (например, родной i386 и x86_64 linux, рабочая станция VMware, UndoDB и симуляторы Simics от Virtutech). FTP: //ftp.gnu.org/pub/gdb

Работает с последним предварительным / предварительным выпуском рабочей станции VMware 7.0, которая также поддерживает обратную отладку гостей MSWindows с помощью отладчика Visual Studio. Получите бесплатную пробную загрузку рабочей станции 7.0 на http://communities.vmware.com/community/beta/workstation, и найдите несколько полезных советов по использованию здесь на http://communities.vmware.com/docs/DOC-10714

5 голосов
/ 07 ноября 2011

В качестве забавной исторической заметки EXDAMS внедрила посмертную обратную отладку в конце 60-х для MULTICS.

5 голосов
/ 09 октября 2009

Недавно выпущенный gdb-7.0 включает возможность обратной отладки для родного linux x86 и x86_64. Вы можете отлаживать любую Linux-программу как обычно, включать функцию «записи», и с этого момента, если вы сделаете слишком большой шаг вперед, вы можете сделать шаг назад или назад - продолжить до точки останова.

4 голосов
/ 07 февраля 2009

Слово, которое вы ищете, может быть "Всезнающая отладка".

Вот один из них: http://www.lambdacs.com/debugger/

На странице UndoDB есть несколько ссылок на (дорогие) коммерческие отладчики.

3 голосов
/ 08 июня 2015

Хотя этот вопрос старый, остается интересной темой, поэтому я решил опубликовать обновленный ответ. Моя диссертация Сочетание обратной отладки и живого программирования для визуального мышления в компьютерном программировании охватывает некоторые исторические подходы и объясняет разницу между всеведущей отладкой и истинной обратной отладкой:

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

Программная всесторонняя отладка началась с системы EXDAMS 1969 года, где она называлась «Воспроизведение истории времени отладки». Отладчик GNU, GDB, поддерживает всестороннюю отладку с 2009 года с помощью функции «запись и воспроизведение процесса». TotalView, UndoDB и Chronon являются лучшими всевозможными отладчиками, доступными в настоящее время, но являются коммерческими системами. TOD для Java представляется наилучшей альтернативой с открытым исходным кодом, которая использует частичное детерминированное воспроизведение, а также частичный захват трассировки и распределенную базу данных для записи больших объемов информации.

Также существуют отладчики, которые не только позволяют перемещаться по записи, но на самом деле способны вернуться назад во время выполнения. Их можно более точно описать как отладчики с обратным временем, с перемещением во времени, двунаправленные или обратные.

Первой такой системой был прототип COPE 1981 года ...

3 голосов
/ 20 октября 2009

Да, я использую Virtutech Simics с реверсом с 2005 года. Это невероятно полезно и делает большинство ошибок очень легко исправить. Особенно те, которые касаются времени и условий гонки, а также многоядерных / потоковых "гейзенгов".

См. http://jakob.engbloms.se/archives/1547, http://jakob.engbloms.se/archives/1554, и http://jakob.engbloms.se/archives/1564 провести инвентаризацию большинства известных на данный момент попыток обратного отладчика.

3 голосов
/ 07 февраля 2009

VS 2010 должен иметь что-то вроде этого, я думаю.

2 голосов
/ 09 октября 2009

Да, я использовал его еще в 90-х годах. Отладчик Watcom C (также понимал FORTRAN и большинство других языков) имел возможность позволить вам шагать назад и вперед во времени.

Это здорово, но не большая новая вещь ...

2 голосов
/ 10 февраля 2009

Вы можете рассмотреть возможность использования отладки воспроизведения VMware, доступной в последней версии VMware Workstation, например, см. http://www.replaydebugging.com/2008/08/vmware-workstation-65-reverse-and.html. Вы можете загрузить пробную версию по адресу http://www.vmware.com/products/ws/, и она работает с Visual Studio.

(Отказ от ответственности: я работаю на VMware, но не на этом продукте.)

1 голос

Mozilla rr обратная отладка на основе трассировки с открытым исходным кодом

https://github.com/mozilla/rr

Он похож на UndoDB, но бесплатный и с открытым исходным кодом.

К сожалению, работает только в Linux x86 , поскольку для таких инструментов требуются расширенные функции ОС для эффективной работы.

Вот минимальный пример rr в действии: Как перейти к предыдущей строке в GDB?

...