WinDbg Tutorial
Материал из Русский WINE
Содержание
Руководство по WinDBG
Руководство по началу работы с WinDbg
Работы над документом ещё ведутся и вам наверняка придётся столкнуться с множеством острых углов. Не стесняйтесь заменять имеющиеся здесь формулировки на более точные или давать более детальное объяснение материала (при этом предпочтительно добавлять ссылки на на соответствующие страницы)
Предварительные требования
- свежая ревизия исходного кода ROS
- командная строка MSVC или WDK
- CMake
- директория, подготовленная для сборки в CMake (запустите команду configure в командной строке MSVC в дереве исходных кодов ROS; папка bin от CMake в переменной PATH)
- навыки получения протокола отладки из ROS
Шаги
1.Подготовка ReactOS (Способ 1)
- соберите ядро: nmake ntoskrnl
- соберите kdcom.dll: nmake kdcom -- предпочтительнее всего использовать файл из состава Windows 2003
- соберите любые другие модули, над которыми хотите работать. Я предпочитаю иметь как минимум ntdll и kernel32. Как обычно, собираем их при помощи nmake ntdll kernel32
- загрузите свежую сборку транка. Чаще всего это будет автоматически собранная сборка с http://www.reactos.org/getbuilds/ - или можете собрать её самостоятельно
- если вы можете смонтировать или каким-либо другим образом получить доступ к файловой системе вашей целевой машины, то просто запустите первый (а также и второй, если на этом этапе вам ничего не нужно отлаживать) этап установки, затем замените файлы на целевом диске теми, которые вы собрали ранее
- в качестве альтернативы можно предложить заменить эти файлы прямо в ISO-образе установочного (или LiveCD) диска
2.Подготовка ReactOS (Способ 2)
- Соберите образ загрузочного диска с использованием MSVC: nmake bootcd. Обратите внимание, что некоторые программы могут не работать в сборке MSVC.
- При необходимости добавьте в образ диска файлы explorer.exe и notifyhook.dll собранные с использованием gcc
3.теперь запустите WinDbg и выберите File->Kernel Debug (Ctrl+K)
4.настройте WinDbg на нужный способ обработки выводимых отлаживаемым компонентом отладочных сообщений
- для использования каналов, выберите параметр Pipe, установите Port в значение \\.\Pipe\ИмяВашегоКанала
- для использования последовательного порта com0com, впишите в Port имя используемого порта, например \\.\CNCA0
- для использования физического последовательного порта, установите скорость обмена данными 115200 бод, в Port впишите имя используемого порта, например \\.\COM1
5.загрузите отлаживаемую систему и выберите пункт ReactOS (Debug) в загрузчике системы. На 1м этапе установки системы режим отладки включен по умолчанию
6.наслаждайтесь отладкой в WinDbg. Небольшие подсказки:
- останов работы системы при помощи сочетания клавиш Tab+K работает также, как и при использовании kdbg. Это может быть полезно, поскольку ROS не всегда реагирует на сигнал останова от WinDbg
- точки останова в ядре по большей части работают. В пользовательском же режиме не всегда. Если вы добавите в нужную часть исходного кода __debugbreak(); то можете быть уверены, что останов произойдёт
- если у вас имеется собранный в MSVC ntdll и собранный в MSVC xxx.dll, то вы, скорее всего сможете произвести полную обратную трассировку из ядра назад в xxx.dll
- ознакомьтесь со страницей WinDbg, где приведены многие полезные команды. Там тоже бы пригодилась ваша помощь.