BACK-IN-TIME Debugger (отладчик с возможностью обратного выполнения программ) Введение. Как известно, значительная часть усилий по разработке программного.

Презентация:



Advertisements
Похожие презентации
Выполнил: Гусев Данил. Что такое программное обеспечение? Возможности современного ПК столь велики, что все большее число людей находят ему применение.
Advertisements

Подготовил учитель информатики МОУ СОШ 36 г. Липецка Ефремов Максим Станиславович.
Подготовка компьютера к практической работе на языке Java Первый этап: установка платформы языка Второй этап: установка редактора.
Системы программирования Системы программирования обеспечивают создания новых программ для компьютера. Современные системы программирования обычно представляют.
Моделирование в среде Microsoft Office Выполнил ученик 11 б класса НОУ «Эврика» Медведев Сергей Научный руководитель Кошкаров С.А Кошкаров С.А.
Средства разработки программ на ассемблере. Assembler. Тема 5:
Системы программирования Средства создания программ Интегрированные системы программированияИнтегрированные системы программирования Среды быстрого проектирования.
Цель урока: Дать основные понятия о языках программирования. План : 1. Основные сведения о языках программирования. 2. Основные средства языков. Алфавит.
Операционная система Подготовил: кадет Карнаухов А.
Государственное автономное профессиональное образовательное учреждение Саратовской области « Поволжский колледж технологий и менеджмента »
П рограммное обеспечение (англ. software) – это совокупность программ, обеспечивающих функционирование компьютеров и решение с их помощью задач предметных.
Операционная система MS-DOS Не управляя оборудованием, программа остается всего лишь литературным произведением, написанным на особом формальном языке.
Тема 1.3. Сервисное программное обеспечение. 1. Понятие операционного окружения Операцио́нное окруже́ние (англ. operating environment) среда, в которой.
Программа Виды программ Языки программирования. ПК – это электронный прибор, предназначенный для автоматизации создания, хранения, обработки и передачи.
Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических.
Подготовил Дубровин Александр Ученик 9 класса Ольховской школы.
Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических.
операционные системы операционные оболочки – интерфейсные системы, драйверы (программы, управляющие работой внешних устройств) утилиты (служебные программы)
Объектно-ориентированное программирование Карпов В.Э. Смолток. Лекция 4. Байт-код.
Системное ПО Прикладное ПО Системы программирования.
Транксрипт:

BACK-IN-TIME Debugger (отладчик с возможностью обратного выполнения программ) Введение. Как известно, значительная часть усилий по разработке программного обеспечения тратится на отладку, то есть на поиск и исправление ошибок в программе. Данная работа посвящена усовершенствованию основного инструмента отладки программ – отладчика. Отладчик – это программа, позволяющая проследить за ходом выполнения другой программы, по шагам просмотреть каждое её действие вплоть до элементарных операций процессора. Однако стандартные отладчики, таких как GDB не позволяют прослеживать действия отлаживаемой программы в обратном направлении. При использовании такого отладчика, после возникновения ошибки, необходимо перезапустить отлаживаемую программу заново, для продолжения отладки. А вдруг при следующем её запуске ошибки не произойдет по каким-то причинам?! А если программа выдает ошибку только после многочасовой работы?! Программисту, использующему стандартный отладчик пришлось бы перезапускать программу заново и в течении всего этого времени заново воспроизводить ситуацию, которая привела к ошибке. Для такой проблемы есть хорошее решение – возможность отладчика, уже столкнувшись с ошибкой в программе, откатить её состояние на несколько шагов назад и продолжить отладку с нужного места. Введение. Как известно, значительная часть усилий по разработке программного обеспечения тратится на отладку, то есть на поиск и исправление ошибок в программе. Данная работа посвящена усовершенствованию основного инструмента отладки программ – отладчика. Отладчик – это программа, позволяющая проследить за ходом выполнения другой программы, по шагам просмотреть каждое её действие вплоть до элементарных операций процессора. Однако стандартные отладчики, таких как GDB не позволяют прослеживать действия отлаживаемой программы в обратном направлении. При использовании такого отладчика, после возникновения ошибки, необходимо перезапустить отлаживаемую программу заново, для продолжения отладки. А вдруг при следующем её запуске ошибки не произойдет по каким-то причинам?! А если программа выдает ошибку только после многочасовой работы?! Программисту, использующему стандартный отладчик пришлось бы перезапускать программу заново и в течении всего этого времени заново воспроизводить ситуацию, которая привела к ошибке. Для такой проблемы есть хорошее решение – возможность отладчика, уже столкнувшись с ошибкой в программе, откатить её состояние на несколько шагов назад и продолжить отладку с нужного места. Постановка задачи. На данный момент, существует несколько отладчиков, позволяющих возвращаться к предыдущему состоянию программы. Например, новый отладчик для C#, Java, JSP, J# и Visual Basic.NET от Omnicore Software для WINDOWS. Также существует отладчик для Objective Caml для UNIX. Все эти отладчики имеют существенный недостаток: они требуют, чтобы программа была откомпилирована в специальные байт-коды. Взять произвольный исполнимый файл и начать с ним работать эти отладчики не могут. Это хоть и упрощает создание отладчика, но зато не позволяет отлаживать приложения, написанные на таких популярных языках программирования, как C/C++ или Pascal. Постановка задачи. На данный момент, существует несколько отладчиков, позволяющих возвращаться к предыдущему состоянию программы. Например, новый отладчик для C#, Java, JSP, J# и Visual Basic.NET от Omnicore Software для WINDOWS. Также существует отладчик для Objective Caml для UNIX. Все эти отладчики имеют существенный недостаток: они требуют, чтобы программа была откомпилирована в специальные байт-коды. Взять произвольный исполнимый файл и начать с ним работать эти отладчики не могут. Это хоть и упрощает создание отладчика, но зато не позволяет отлаживать приложения, написанные на таких популярных языках программирования, как C/C++ или Pascal. Цель работы - создание отладчика, способного выполнять программу в обратную сторону, но не привязанного к какому-либо языку программирования, байт-коду, виртуальной машине или имеющему какие-то иные ограничения подобного рода. Описание программы BIT Debugger. Программа BIT Debugger представляет собой отладчик под операционную систему Linux, обладающий основными функциями любого традиционного отладчика. Программа сделана на основе широко распространенного стандартного отладчика GDB. Главной особенностью отладчика BIT Debugger является возможность отката отлаживаемой программы к предыдущему состоянию. Описание программы BIT Debugger. Программа BIT Debugger представляет собой отладчик под операционную систему Linux, обладающий основными функциями любого традиционного отладчика. Программа сделана на основе широко распространенного стандартного отладчика GDB. Главной особенностью отладчика BIT Debugger является возможность отката отлаживаемой программы к предыдущему состоянию. Помимо стандартных операций, присущих обыкновенному отладчику, BIT Debugger обладает следующими возможностями: - Восстановление более раннего состояния программы, сохраненного вручную, непосредственно в процессе отладки. - Откат программы назад на определенное число строчек исходного кода отлаживаемой программы. Принцип работы команд восстановления состояния. Принцип работы команд восстановления состояния. Идея восстановления предыдущего состояния Дьяченко Василий Санкт-Петербург ЛНМО

программы заключается в клонировании процесса отлаживаемой программы с помощью системного вызова fork() операционной системы Linux. В сохранении и восстановлении одного состояния программы можно выделить следующие этапы: Применение. При разработке программы BIT Debugger, за основу Применение. При разработке программы BIT Debugger, за основу был взят широко распространенный отладчик GDB. Такой подход имеет преимущества: был взят широко распространенный отладчик GDB. Такой подход имеет преимущества: Это дает возможность применять BIT Debugger при отладке программ, написанных на Это дает возможность применять BIT Debugger при отладке программ, написанных на практически любых языках. Результаты получают шанс на практическое использование – их можно будет перенести Результаты получают шанс на практическое использование – их можно будет перенести в стандартный отладчик GDB. Возможность выполнить программу в обратную сторону, реализованную в BIT Debugger, удобно использовать при отладке больших приложений, в которых ошибка возникает после долгой работы. При этом не требуется больших затрат системных ресурсов, так как при клонировании процесса отлаживаемой программы, дополнительная память выделяется только на те части программы, которые изменились после клонирования процесса. Возможность отката программы назад дает программисту большой выигрыш во времени, что позволяет значительно сократить усилия, затрачиваемые на поиск источника возникшей ошибки. PID=6000 код fork() PID=6000 код PID=6001 код PID = 6000 Код программы … BIT Debugger Код программы Код программы... PID = 6000 call fork call wait Испорченный код … … BIT Debugger Код программы Код программы... PID=6000 call fork call wait … BIT Debugger PID=6001 call wait call fork …Код программы Код программы... ParentChild PID=6000 call fork call wait … BIT Debugger PID=6001 код …Код программы Код программы... ParentChild PID=6001 код … BIT Debugger fork: PID=6000 call fork call wait … BIT Debugger PID=6001 код …Код программы Код программы... ParentChild 1 СОХРАНЕНИЕ: ЗАГРУЗКА: PID=6000 код …Код программы Код программы... Parent 2 PID = 6000 Код программы … BIT Debugger 3 Это дает возможность сохранить одно состояние программы и позже загрузить его. Повторяя данную операцию несколько раз, можно получить необходимое число точек восстановления. Затем можно восстановить любое из сохраненных ранее состояний программы. temp.c Исходный код программы PID=6000 call fork call wait … PID=6001 call fork call wait … Сохраненное состояние программы (на строке 1) Сохраненное состояние программы (на строке 5) Это состояние нужно загрузить (строка 3) Исходный код программы Эта строка на данный момент выполняется. (строка 6) 1 2 3