Отладка приложений


WDBG: реальный отладчик - часть 2


Таблица 4.1. Главные подсистемы WDBG

Подсистема

Описание

WDBG.EXE

Содержит весь Ul-код. Дополнительно он заботится об обработке всех точек прерывания. Большая часть этих действий отладчика запрограммирована в файле WDBGPROJDOC.CPP

LOCALDEBUG.DLL

Реализует цикл отладки. Поскольку я хотел обеспечить повторное использование этого отладочного цикла, код пользователя (в данном случае это WDBG.EXE) передает в цикл отладки С++-класс, производный от класса CDebugBaseUser (который определен в DEBUGINTERFACE.H). Когда происходит какое-нибудь отладочное событие, цикл отладки вызыва- " ется в этот класс. За всю синхронизацию ответственны классы пользователей. Файлы WDBGUSER.H и WDBGUSER.CPP содержат координирующий класс для WDBG.EXE. WDBG.EXE использует простую синхронизацию (типа SendMessage). Другими словами, поток отладки посылает сообщение Ш-потоку и блокируется, пока не произойдет возврат из Ill-потока. Если отладочное событие требует ввода пользователя, поток отладки блокируется после посылки сообщения о событии синхронизации. Как только Ill-поток начинает обработку команды Go, он устанавливает событие синхронизации, и поток отладки снова начинает выполняться

LOCALASSIST.DLL

Этот простой модуль только оболочка API-функций, манипулирующих с памятью подчиненного отладчика и регистрами. Используя интерфейс, определенный в этом модуле, WDBG.EXE и I386CPUHELP.DLL могут немедленно перейти к управлению удаленной отладкой, просто заменив этот модуль на сетевой

I386CPUHELP.DLL

Это вспомогательный модуль для процессора IA32 (Pentium). Хотя этот модуль специфичен для процессоров Pentium, его интерфейс, определенный в CPUHELP.H, не зависит от CPU. Если бы вы захотели пренести WDBG на другой процессор, то это единственный модуль, который пришлось бы заменить. Дизассемблер в этом модуле взят из программы Dr. Watson, которая поставляется в составе Platform SDK. Хотя дизассемблер работает, но он нуждается в обновлении, чтобы поддержать последние варианты CPU Pentium




Начало  Назад  Вперед



Книжный магазин