Тестирование покрытия кода в Delphi 2007: использование MAP-файлов для инструкций INT3Delphi , Синтаксис , Справочник по API-функциямВ статье рассматривается подход к созданию инструмента для тестирования покрытия кода в среде разработки Delphi 2007. Основная идея заключается в использовании Win32 Debug API для вставки и последующего удаления точек останова для каждой строки исходного кода, что позволяет отслеживать выполнение кода. Описание проблемыПри разработке инструмента для тестирования покрытия кода в Delphi 2007 был выбран следующий алгоритм:
Вопрос, который возник в процессе разработки: являются ли все адреса строк исходного кода в подробном MAP-файле валидными для вставки инструкции INT3? Автор столкнулся с нарушениями доступа при работе с более крупными приложениями, где адреса, вызывающие ошибки, содержали байт Подтвержденный ответВ теории, да, адреса строк исходного кода в MAP-файле должны быть валидными для вставки инструкции INT3. На практике это также должно быть верно, если Delphi может устанавливать точки останова на каждой строке. Однако, возможно, потребуется специальная обработка некоторых случаев, например, при наличии ассемблерного кода, где первая строка процедуры может содержать инициализацию локальных переменных и установку регистра EBP. Альтернативный ответНе все строки исходного кода содержат исполняемый код. Например, функция Пример кода
ЗаключениеАвтор инструмента смог выявить и устранить проблему, связанную с несоответствием адресов в MAP-файле и фактическими адресами модулей. После устранения этой ошибки, подход стал работать для модулей без ассемблерного кода. В будущем автор планирует опубликовать свой инструмент с открытым исходным кодом для сообщества. В данной статье был представлен подход к созданию инструмента для тестирования покрытия кода в Delphi 2007 с использованием MAP-файлов и инструкций INT3. Обсуждались возможные трудности и пути их решения. В статье рассматривается метод тестирования покрытия кода в Delphi 2007 с использованием MAP-файлов и вставкой инструкций INT3 для отслеживания выполнения кода, а также анализируются проблемы валидности адресов для вставки этих инструкций. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Справочник по API-функциям ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |