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
Доклады
О ReactOS • ARWINSS • ЧеЗа
Информация Новости Выпуски новостей • Переводы блогов • Новости проекта • Видео • ReactOS на Хабре • USB от Вадима Галянта
Разработка Руководство по программированию • Отсутствующая функциональность • Ветви разработки • Компоненты системы • ReactOS и Wine • План работ • Roadmap ядра by Vgal • Разработчики • Совместимость с dll Windows • Наиболее значимые изменения за год • Используемые проекты • Google Summer of Code • Известные проблемы
Порты AMD64 • ARM • Xbox • PowerPC
Компоненты Файловые системы • Режим совместимости • Отчеты об ошибках • Печать • USB • Ядро
Загрузчик Восстановление MBR • Загрузка из GRUB • Параметры загрузки
Прочее ARWINSS • Приложения в ReactOS • Оформление ReactOS • Координаторы • "Пасхальные яйца" • Монетизация
Другое Типы ядер • FreeWin95
Помощь
RAM-диск ReactOS по PXE • с жесткого диска
Разработка Стиль написания кода • Стандарты RC-файлов • Работа с документацией • Венгерская нотация • GNU Indent • [ Subversion : ветви • слияние • использование TortoiseSVN ] • Основы перевода • Отправка патчей
Репорты Отладка в VirtualBox • Отладка на экран • Добавление программы в менеджер приложений • Отправка отчетов
Отладка Com0com • GDB • Kdbg • Rossym.gdb • Roswin.gdb • WinDBG • Руководство по WinDBG • Включение трассировки ядра • Коды DPRINT • Удалённый отладчик ReactOS
Сборка CMake • RBuild • Файлы RBuild • Автоматическое копирование файлов • Сборка MINGW-w64 • Сборка модулей • Среда сборки
Тестирование VirtualBox • VMware • QEMU • Hyper-V • Необходимый объём диска • Перенос файлов на виртуальный диск • Установка ReactOS • Установка драйверов
Сеть Общие папки • Samba • NFS
Игры Установка DirectPlay
Обновление ReactOS • Загрузочная флешка • Чем можно помочь проекту • Создание нового пользователя • Звук и сеть в VirtualBox • Съемка и публикация видео • IRC-канал • Сторонние компоненты • FAQ • ReactOS как рабочая станция • ReactOS и UEFI
Обзоры Оболочка • NTVDM • WOW • Community Edition • История сайта • ReactOS Server • Криптография • ПО времен XP