Двунаправленная (или обратная) отладка

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

Ответ 1

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

Он работает с последним предварительным предварительным выпуском VMware Workstation 7.0, который также поддерживает обратную отладку гостей MSWindows с помощью отладчика Visual Studio. Получите бесплатную пробную загрузку рабочей станции 7.0 на http://communities.vmware.com/community/beta/workstation и найдите полезные полезные советы здесь, <а2 >

Ответ 2

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

Ответ 3

Как забавная историческая заметка, EXDAMS внедрил всплывающую обратную отладку в конце 60-х годов для MULTICS.

Ответ 4

Слово, которое вы ищете, может быть "Omniscient Debugging".

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

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

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

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

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

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

Ответ 8

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

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

Ответ 9

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

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

Ответ 10

Я использую UndoDB для Linux вместо простого gdb для каждого сеанса отладки. Обратная отладка очень полезна и значительно ускоряет отладку. Вы можете начать отладку от симптома проблемы (например, сбой утверждения или некорректное сообщение) и отлаживать назад во времени, ища основную причину проблемы.