2.6 Отладка драйверов
2.6 Отладка драйверов
Разговор о драйверах был бы неполным, если не упомянуть об отладке драйверов. Т.к. драйвера работают в нулевом кольце защиты процессора со всеми вытекающими последствиями, то обыкновенные отладчики пользовательских приложений не пригодны для отладки драйверов.
Если, например, разрабатывать драйвер под ОС Linux, то ситуация там может быть немного хуже: в этой ОС вообще нет какой-либо возможности отлаживать драйвера, кроме как воспользоваться отладчиком gdb. Но в таком случае надо перекомпилировать ядро системы специальным образом и станцевать еще несколько подобных танцев с бубном. Поэтому зачастую отладка сводится к вызову функций printk, которые в великом множестве раскиданы по всему ядру системы.
К счастью, хоть в этом Windows имеет преимущества. Для того, чтобы можно было отлаживать драйвера, отладчик должен сам работать в нулевом кольце защиты. Естественно, разработка такой программы является чрезвычайно сложной задачей, поэтому таких отладчиков на сегодняшний день известно всего два: WinDbg (поставляется с пакетом DDK) и SoftIce (входит в состав NuMega DriverStudio). SoftIce считается одним из лучших отладчиков для Windows всех типов. Это надежный, мощный и довольно удобный в использовании инструмент. SoftIce может применяться для различных целей: для отладки драйверов и приложений пользователя, для просмотра информации о системе и т.п. Мы рассмотрим, как применять SoftIce для отладки драйверов устройств.
Будучи установленным в Win98, SoftIce прописывает в Autoexec.bat строку вида: c:Progra~1 umegadriver~1softicewinice
Т.е. SoftIce загружается после загрузки DOS и сам грузит Windows. При работе Windows SoftIce активизируется лишь при каком-нибудь системном исключении или в точке останова, заданной программистом в драйвере. Также вызвать SoftIce можно, нажав Ctrl+D. На экране появляется окно отладчика.
Пока окно SoftIce активно, вся деятельность ОС замирает; именно сейчас можно безболезненно отлаживать драйвера.
Окно SoftIce разбито на несколько окон. Обычно в центре видно окно кода, над ним – окно регистров процессора и в самом низу – окно сообщений. Перемещаться в пределах окна можно, используя клавиши управления курсором или мышь.
В самом низу окна SoftIce расположена командная строка. SoftIce не имеет графического интерфейса, и все команды управления отладчиком вводятся в командной строке. SoftIce имеет довольно неплохую систему помощи. Перечень команд выдается по команде help. Наверное, самая важная команда — это команда выхода из SoftIce. Для этого нужно нажать клавишу F5 или дать команду Х (регистр не имеет значения).
Внимательно изучив окно сообщений, мы там увидим разнообразные системные сообщения и те сообщения, которые наш драйвер выводит через объект трассировки. Таким образом, можно просматривать все важные сведения, которые драйвер хочет сообщить нам. Если мы хочем, чтобы драйвер не выводил какие-то сообщения или выводил другие сообщения, нам надо отредактировать текст драйвера, добавив новые или удалив существующие трассировочные сообщения. После этого надо перекомпилировать драйвер и перезагрузить его.
Но, естественно, программисту мало простого чтения сообщений, посланных драйвером. Для эффективной отладки любой программы надо установить точку останова (breakpoint), просмотреть значения регистров. К счастью, SoftIce предоставляет такую возможность.
Универсальной точкой останова является использование прерывания INT 3. Как и в ОС MS-DOS, в Windows INT 3 также является прерыванием отладки. Для этого в тексте драйвера, где необходимо установить breakpoint, необходимо вставить следующий код:
_asm {
int 3
}
При этом присходит вызов прерывания INT 3.
Но по умолчанию SoftIce не реагирует на INT 3. Для того, чтобы по этому прерыванию активизировался отладчик, необходимо вызвать SoftIce и дать команду:
SET I3HERE ON
Теперь при вызове INT 3 произойдет <всплывание> этого кода в отладчике. Для отключения режима отладки по INT 3 следует дать команду SET I3HERE OFF.
После того, как наш драйвер <всплыл> в SoftIce, мы можем контролировать выполнение программы при помощи команд:
HERE (F7)
шаг на следующую строку в окне кода;
T F8
выполнить одну инструкцию процессора (трассировка);
HBOOT
перезагрузка системы;
G
перейти на указанный адрес;
GENINT
сгенерировать прерывание;
X F5
продолжить выполнение программы (выход из SoftIce).
Если драйвер был скомпилирован в отладочной конфигурации, то на экране будет виден текст драйвера, написанный на С++.
SoftIce также может просматривать значения переменных пользователя. Для того, чтобы открыть/закрыть окно просмотра переменных (Watch), надо дать команду WW или нажать Alt+F4. Добавить/убрать переменную для просмотра можно при по– мощи команды WATCH.
Это основные команды, применяемые для отладки драйверов устройств в SoftIce. А в общем, этот отладчик имеет огромное количество функциональных возможностей и его полное описание пославляется с программой и занимает порядка двухсот страниц.
Надеюсь, это руководство было для Вас интересно. Если даже не интересно — то, надеюсь, Вы узнали что-то новое для себя.
Написать мне
Зайти на мою домашнюю страничку
С уважением — Александр Тарво.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Отладка
Отладка Один из худших сеансов отладки за всю мою карьеру случился в 1972 году. Терминалы, подключенные к бухгалтерской системе профсоюза грузоперевозчиков, зависали один-два раза в день. Сознательно воспроизвести ошибку было невозможно. Ошибка не отдавала предпочтений
Типы драйверов
Типы драйверов Драйверы различаются по возможностям, которые они предоставляют, а также по тому, каким образом обеспечивается к ним доступ и управление. Можно рассматривать три основные типа драйверов: Символьные драйверы Этот тип драйверов обеспечивает работу с
1.7 Иерархия драйверов систем хранения и типы драйверов
1.7 Иерархия драйверов систем хранения и типы драйверов Как описывалось в предыдущем разделе, Windows NT основана на архитектуре, в которой драйверы формируют многоуровневую иерархию. Преимущество такой архитектуры состоит в расширяемости архитектуры и возможности
Установка драйверов
Установка драйверов Если вы думаете, что сразу же после установки Windows вы можете начинать работу – вы крупно ошибаетесь. И когда после многочисленных перезагрузок и настроек ваши глаза узреют ласковый пейзаж Рабочего стола Windows – не спешите устанавливать программы. Пока
Обновление драйверов устройств
Обновление драйверов устройств Чтобы обновить драйвер устройства, нажмите кнопку Обновить. В результате на экране откроется окно, изображенное на рис. 3.13. Рис. 3.13. Обновление драйвераВы можете выполнять обновление драйвера как в ручном, так и в автоматическом режиме
2.2.11. Отладка CGI
2.2.11. Отладка CGI Страницу HTML с результатом, сгенерированную по запросу мы модем увидеть выполнив CGI приложение. Для этого требуется (персональный) Web сервер. По этому я написал небольшую программу отладки, используя Delphi 2.01 и NetManage HTML
4-й шаг. Отладка
4-й шаг. Отладка По мере усложнения программ вероятность появления ошибок в работе (ошибок выполнения) растет экспоненциально. После обнаружения такой ошибки главной задачей становится выявление причины ошибки и устранение проблемы. Одним словом, это отладка.В небольших
5.1.7. Отладка
5.1.7. Отладка Команда ipcs выдает информацию о взаимодействии процессов, включая сведения о совместно используемых сегментах (для этого следует задать флаг -m). Например, в показанном ниже случае сообщается о том, что используется один такой сегмент, с номером 1627649:% ipcs -m--------
Отладка
Отладка При разработке приложений всегда наступает момент, когда приходится переходить к поиску и устранению ошибок. В настоящей книге мы не будем подробно описывать процесс отладки, давать советы по использованию отладчика и описывать методы поиска и устранения
8.4. Отладка
8.4. Отладка Когда программа не делает того, чего от нее ждут, главной проблемой становится отыскание ошибки (или ошибок). Всегда легче найти ошибку в какой-нибудь части программы (или в отдельном модуле), чем во всей программе. Поэтому следует придерживаться следующего
Ошибки драйверов
Ошибки драйверов Пожалуй, одной из главных причин, приводящей к нестабильности работы Windows ХР, является недостаточно продуманное и небезопасное использование драйверов установленных и подключенных устройств. Чаще всего это касается драйверов принтера и
Ошибки драйверов
Ошибки драйверов Пожалуй, одной из главных причин, приводящих к нестабильности работы операционной системы, является недостаточно продуманное и небезопасное использование драйверов установленных и подключенных устройств. Чаще всего это касается драйверов принтера,
Отладка
Отладка Инструкция отладки является средством условной компиляции. Она записывается так:debug instruction; instruction; ... endВ файле управления (Ace-файле) для каждого класса можно включить или отключить параметр debug. При его включении все инструкции отладки данного класса выполняются,
Установка драйверов
Установка драйверов Теперь подробно разберем то, что нужно сделать при проверке кабеля в магазине, а затем и при подключении телефона к своему домашнему компьютеру.Подключение телефона к компьютеру проще всего начать с чтения «Руководства пользователя» к data-кабелю или
Установка драйверов
Установка драйверов Что делать теперь? Теперь вставьте диск с драйверами от материнской платы и установите их. Обычно при этом будут установлены драйверы звуковой, сетевой платы и некоторые дополнительные драйверы.В процессе установки драйверов потребуется
Обновление драйверов
Обновление драйверов Установка последних версий драйверов – эффективное средство для повышения стабильности работы компьютера и устранения неполадок. Существуют два основных способа обновления драйверов: использование службы обновления Windows Vista и поиск на сайте