Вятский государственный гуманитарный университет
Опубликован: 27.05.2013 | Доступ: свободный | Студентов: 2689 / 585 | Длительность: 09:18:00
Самостоятельная работа 1:

Сборка исследовательского ядра Windows и работа с отладчиком

< Лекция 5 || Самостоятельная работа 1: 1234 || Лекция 6 >

Задание 6. Научиться пользоваться справкой отладчика WinDbg.

Указания к выполнению.

1. В отладчике WinDbg в меню Help выберите пункт Contents – откроется окно справочной системы отладчика, которая предоставляет подробную информацию по всем его командам.


2. Например, найдем информацию о команде lm.

Способ 1. Перейдите на вкладку Указатель и введите название команды:


Нажав кнопку Вывести можно перейти на страницу с описанием команды:


Способ 2. На вкладке Содержание найдите следующий раздел: Debugger Reference – Debugger Commands – Commands:


В указанном разделе найдите команду lm:


Задание 7. Изучить способы представления чисел в WinDbg.

Указания к выполнению.

1. В WinDbg существуют два основных способа представления десятичных и шестнадцатеричных чисел – в стиле ассемблера MASM и в стиле C++. Этим способам посвящен раздел Numerical Expression Syntax в справке WinDbg:


2. В лабораторных работах будут использоваться обозначения в стиле C++:

  • десятичные числа представляются обычным способом: 12345;
  • чтобы явно указать, что число записано в десятичной системе счисления, нужно добавить префикс 0n: 0n12345;
  • шестнадцатеричные числа обозначаются с префиксом 0x, например: 0x12FF14;
  • при написании шестнадцатеричных цифр можно использовать как заглавные латинские буквы, так и строчные: 0xAB10CE = 0xab10ce;

3. Если не указывается префикс, число в WinDbg считается записанным в текущей системе счисления, которую можно узнать и, при необходимости, изменить при помощи команды n (Set Number Base):


В данном примере сначала проверяется текущая система счисления (команда n), она оказывается шестнадцатеричной (base is 16), затем устанавливается десятичная система счисления (команда n 10) и возвращается шестнадцатеричная (команда n 16).

4. Для перевода чисел из одной системы счисления в другую можно воспользоваться командой ? (Evaluate Expression):


В примере на рисунке сначала проверяется, что текущая система счисления – шестнадцатеричная (команда n), затем выполняется команда перевода числа 10, которое, в соответствии с текущей системой счисления рассматривается как шестнадцатеричное (команда ? 10), далее явно указывается, что переводимое число десятичное (команда ? 0n10), и, наконец, явно указывается, что переводимое число шестнадцатеричное (команда ? 0x10).

Задания для самостоятельного выполнения

Задание 1. Найдите информацию о следующих командах отладчика:

  • ? (Command Help)
  • ? (Evaluate Expression)
  • bp
  • d, da, db, dw, dd
  • dt
  • n
  • r
  • s

Задание 2. Найдите информацию о следующих командах расширений отладчика:

  • !address
  • !handle
  • !sd
  • !token

Указания к выполнению.

1. Описание команд расширений содержится в разделе справки Debugger Reference – Debugger Commands – General Extension Commands.

Задание 3. Найдите информацию о следующих командах расширений режима ядра:

  • !devobj
  • !drvobj
  • !fileobj
  • !memusage
  • !object
  • !process
  • !sysinfo
  • !thread
  • !vm

Указания к выполнению.

1. Описание команд расширений содержится в разделе справки Debugger Reference – Debugger Commands – Kernel Mode Extension Commands.

Задание 4. Изучить пример хорошего комментирования кода.

Указания к выполнению.

  1. Откройте в Visual Studio файл WRK: base\ntos\mm\addrsup.c.
  2. В этом файле комментирование построено на основе связи с книгой Дональда Кнута (Donald Knuth) "Искусство программирования. Том 3. Сортировка и поиск" ("The Art of Computer Programming, Volume 3, Sorting and Searching").
  3. Просмотрите комментарии к алгоритмам, приведенным в файле.
< Лекция 5 || Самостоятельная работа 1: 1234 || Лекция 6 >