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, где приведены многие полезные команды. Там тоже бы пригодилась ваша помощь.
ReactOS
Search.png
Доклады
О ReactOSARWINSSЧеЗа
Информация Новости Выпуски новостейПереводы блоговНовости проектаВидеоReactOS на ХабреUSB от Вадима Галянта
Разработка Руководство по программированиюОтсутствующая функциональностьВетви разработкиКомпоненты системыReactOS и WineПлан работRoadmap ядра by VgalРазработчикиСовместимость с dll WindowsНаиболее значимые изменения за годИспользуемые проектыGoogle Summer of CodeИзвестные проблемы
Порты AMD64ARMXboxPowerPC
Компоненты Файловые системыРежим совместимостиОтчеты об ошибкахПечатьUSBЯдро
Загрузчик Восстановление MBRЗагрузка из GRUBПараметры загрузки
Прочее ARWINSSПриложения в ReactOSОформление ReactOSКоординаторы"Пасхальные яйца"Монетизация
Другое Типы ядерFreeWin95
Помощь
RAM-диск ReactOS по PXEс жесткого диска
Разработка Стиль написания кодаСтандарты RC-файловРабота с документациейВенгерская нотацияGNU Indent • [ Subversion : ветвислияниеиспользование TortoiseSVN ] • Основы переводаОтправка патчей
Репорты Отладка в VirtualBoxОтладка на экранДобавление программы в менеджер приложенийОтправка отчетов
Отладка Com0comGDBKdbgRossym.gdbRoswin.gdbWinDBGРуководство по WinDBGВключение трассировки ядраКоды DPRINTУдалённый отладчик ReactOS
Сборка CMakeRBuildФайлы RBuildАвтоматическое копирование файловСборка MINGW-w64Сборка модулейСреда сборки
Тестирование VirtualBoxVMwareQEMUHyper-VНеобходимый объём дискаПеренос файлов на виртуальный дискУстановка ReactOSУстановка драйверов
Сеть Общие папкиSambaNFS
Игры Установка DirectPlay
Обновление ReactOSЗагрузочная флешкаЧем можно помочь проектуСоздание нового пользователяЗвук и сеть в VirtualBoxСъемка и публикация видеоIRC-каналСторонние компонентыFAQReactOS как рабочая станцияReactOS и UEFI
Обзоры ОболочкаNTVDMWOWCommunity EditionИстория сайтаReactOS ServerКриптографияПО времен XP