Режим отладки windows 10: что это и как включить, возможные проблемы

Содержание

что это и как включить, возможные проблемы

Компьютеры на базе Windows 10 поддерживают несколько способов запуска. Среднестатистические пользователи не придают этой опции значения, включая ПК в обычном режиме, когда доступны все основные службы. Но параллельно с этим существует режим отладки на операционной системе Windows 10, который может пригодиться опытным юзерам, желающим провести диагностику своего устройства.

СОДЕРЖАНИЕ СТАТЬИ:

Что такое режим отладки в Windows 10

Для определения того, что собой представляет данный режим, необходимо определить значение слова «отладка» («Debugging»). В сфере компьютерной техники ею называют процесс, позволяющий найти и устранить ошибки, связанные с работой ПК.

Режим отладки позволяет решить массу проблем – от небольших сбоев Windows 10 до полного отказа от работы. Впрочем, к нему следует обращаться только опытным пользователям, которые способны найти объяснение каждому своему шагу. В остальных случаях, когда речь идет о новичке, исключать возможность применения режима тоже нельзя. Но в такой ситуации важно изучить инструкцию по активации Debugging и способах его применения на практике.

Как его включить?

Чтобы приступить к поиску и устранению неисправностей, необходимо перейти в режим Debugging. Для этого понадобится открыть меню с разными вариантами загрузки по следующему алгоритму:

  • Откройте «Параметры» через меню «Пуск».
  • Перейдите в раздел «Обновление и безопасность», а затем – «Восстановление».
  • Под заголовком «Особые варианты загрузки» нажмите на кнопку «Перезагрузить сейчас».

На заметку. Также вы можете открыть дополнительное меню, зажав клавишу «Shift» при выборе варианта «Перезагрузка» в «Пуске».

В случае правильного выполнения указанных действий компьютер перезагрузится, а при следующем включении вы увидите синий экран с выбором действий. Можно нажать на кнопку «Продолжить», чтобы запустить ПК в стандартном режиме, но нас интересует Debugging, поэтому действуйте иначе:

  • Перейдите в раздел «Поиск и устранение неисправностей».
  • Выберите «Дополнительные параметры», а затем – «Параметры загрузки».
  • Найдите в списке пункт, отвечающий за отладку, и нажмите на клавишу, которая отвечает за ее активацию (как правило, это клавиша «F1»).

После этого устройство включится вместе с отладочным окном, которое поможет выполнить различные манипуляции для диагностики и решения проблем. Также в рассматриваемом режиме любые ошибки сохраняются в виде отдельных файлов «логов», аналогичным образом помогающих установить причины неполадок и своевременно устранить их.

Возможные проблемы

Debugging изначально предназначен для устранения неисправностей, однако при попытке запуска функции у пользователей тоже могут возникнуть проблемы. Самая частая из них заключается в том, что при перезагрузке не открывается окно дополнительных параметров. Исправить ошибку удается путем обращения к альтернативному способу запуска:

  • Щелкните ПКМ по иконке «Пуск».
  • Откройте Командную строку с правами Администратора.
  • Введите запрос «bcdedit /set advancedoptions true».
  • Нажмите на клавишу «Enter».

Следом произойдет перезапуск, и расширенные параметры откроются в принудительном порядке. Еще одна проблема связана с выходом из отладки. Чтобы компьютер включался в стандартной конфигурации, необходимо обработать запрос «deletevalue». Впечатать «bcdedit /deletevalue advancedoptions» в вышеупомянутой Командной строке или на появившемся синем экране выбрать опцию «Продолжить».

Вам помогло? Поделитесь с друзьями — помогите и нам!

Твитнуть

Поделиться

Поделиться

Отправить

Класснуть

Линкануть

Вотсапнуть

Запинить

Читайте нас в Яндекс Дзен

Наш Youtube-канал

Канал Telegram

Поисковая система вакансий

Ищите сочинения по школьной программе? Тогда Вам сюда

«Как-нибудь» или «как нибудь» – как правильно пишется?

Adblock
detector

Начало работы с отладкой Windows — Windows drivers


  • Статья

  • Чтение занимает 4 мин

В этой статье описывается, как приступить к отладке для Windows. Если вы хотите использовать отладчик для анализа аварийного дампа, см. раздел Анализ файлов аварийного дампа с помощью WinDbg.

Чтобы приступить к отладке Windows, выполните следующие действия.

1. Определение главного и целевого систем

Для отладки обычно используются две отдельные компьютерные системы, так как выполнение инструкций на процессоре обычно приостанавливается во время процесса. Отладчик выполняется в хост-системе , а код, который требуется отладить, выполняется в целевой системе.

Целевой объект —————————————————> узла <

В некоторых ситуациях в качестве второй системы можно использовать виртуальную машину. Например, виртуальный компьютер может выполняться на том же компьютере, что и код, необходимый для отладки. Однако если ваш код взаимодействует с низкоуровневым оборудованием, использование виртуального компьютера может быть не лучшим подходом. Дополнительные сведения см. в разделе Настройка сетевой отладки виртуальной машины — KDNET.

2. Определите тип отладчика: режим ядра или пользовательский режим

Затем необходимо определить, следует ли использовать отладку в режиме ядра или в пользовательском режиме.

  • Операционная система и привилегированные программы выполняются в режиме ядра. Код в режиме ядра имеет разрешение на доступ к любой части системы, и он не ограничен, как код в пользовательском режиме. Код в режиме ядра может получить доступ к любой части любого другого процесса, выполняющегося в пользовательском режиме или режиме ядра. Большая часть основных функциональных возможностей ОС и многие аппаратные драйверы устройств выполняются в режиме ядра.

  • Приложения и подсистемы на компьютере выполняются в пользовательском режиме. Процессы, которые выполняются в пользовательском режиме, делают это в собственных виртуальных адресных пространствах. Они не могут получить прямой доступ ко многим частям системы, включая системное оборудование, память, которая не выделена для их использования, и другие части системы, которые могут нарушить целостность системы. Процессы, выполняемые в пользовательском режиме, эффективно изолированы от системы и других процессов пользовательского режима, поэтому они не могут вмешиваться в работу этих ресурсов.

Если ваша цель заключается в отладке драйвера, определите, является ли драйвер драйвером в режиме ядра или драйвером пользовательского режима. Драйверы модели драйверов Windows (WDM) и Kernel-Mode Driver Framework (KMDF) являются драйверами в режиме ядра. Как следует из названия, драйверы User-Mode Driver Framework (UMDF) являются драйверами пользовательского режима.

При некоторых проблемах может быть трудно определить, в каком режиме выполняется код. В этом случае может потребоваться выбрать один режим и посмотреть, какие сведения доступны в этом режиме. Некоторые проблемы требуют использования отладчика как в пользовательском режиме, так и в режиме ядра.

В зависимости от режима отладки может потребоваться настроить и использовать отладчики различными способами. Некоторые команды отладки работают одинаково в обоих режимах, а некоторые — по-разному.

Дополнительные сведения об использовании отладчика в режиме ядра:

  • Начало работы с WinDbg (режим ядра)
  • Отладка универсальных драйверов: пошаговая лабораторная работа (режим эхо-ядра)
  • Драйверы отладки: пошаговая лаборатория (режим ядра Sysvad)

Дополнительные сведения об использовании отладчика в пользовательском режиме:

  • Начало работы с WinDbg (пользовательский режим)

3. Выберите среду отладчика

Отладчик WinDbg хорошо работает в большинстве ситуаций, но иногда может потребоваться использовать другой отладчик, например консольные отладчики для автоматизации или Visual Studio. Дополнительные сведения см. в разделе Среды отладки.

4. Определение способа подключения целевого объекта и узла

Как правило, целевые и хост-системы подключены к сети Ethernet. Если вы выполняете работу на раннем этапе или у вас нет ethernet-подключения на устройстве, доступны другие варианты сетевого подключения. Дополнительные сведения вы найдете в следующих статьях:

  • Автоматическая настройка отладки сетевого ядра KDNET
  • Настройка сетевой отладки виртуальной машины — KDNET

5.

Выберите 32-разрядные или 64-разрядные средства отладки

Требуется ли 32-разрядный или 64-разрядный отладчик, зависит от версии Windows, работающей в целевой и хост-системах, а также от того, выполняется ли отладка 32-разрядного или 64-разрядного кода. Дополнительные сведения см. в разделе Выбор 32-разрядных или 64-разрядных средств отладки.

6. Настройка символов

Чтобы использовать все расширенные функции, которые предоставляет WinDbg, необходимо загрузить соответствующие символы. Файлы символов содержат данные, которые могут быть полезны в процессе отладки. Если символы неправильно настроены, они будут недоступны при попытке использовать функции, зависящие от символов. Дополнительные сведения см. в разделе Символы для отладки Windows (WinDbg, KD, CDB, NTSD).

7. Настройка исходного кода

Если ваша цель заключается в отладке собственного исходного кода, необходимо настроить путь к исходному коду. Дополнительные сведения см. в разделе Путь к источнику.

8.

Знакомство с операцией отладчика

Дополнительные сведения об операциях отладчика для различных задач см. в разделе Операция отладчика. Например, в разделе Загрузка библиотек DLL расширения отладчика объясняется, как загружать расширения отладчика. Дополнительные сведения о работе с WinDbg см. в статье Отладка с помощью WinDbg.

9. Знакомство с методами отладки

Стандартные методы отладки применяются к большинству сценариев отладки. Примеры включают установку точек останова, проверку стека вызовов и обнаружение утечки памяти. Специализированные методы отладки применяются к определенным технологиям или типам кода. Примеры: отладка Plug and Play, отладка KMDF и отладка RPC.

10. Использование ссылочных команд отладчика

При работе в отладчике можно использовать различные команды отладки. Используйте команду .hh в отладчике, чтобы отобразить справочные сведения о любой команде отладки. Дополнительные сведения о доступных командах см. в справочнике по отладчику.

11. Использование расширений отладки для определенных технологий

Существует несколько расширений отладки, которые можно использовать для анализа структур данных, относящихся к предметной области. Дополнительные сведения см. в разделе Специализированные расширения.

В этой документации предполагается, что у вас есть некоторые знания об основных внутренних компонентах Windows. Дополнительные сведения о внутренних компонентах Windows, включая использование памяти, контекст, потоки и процессы, см. в таких ресурсах, как Внутренние компоненты Windows, созданные Марком Руссиновичем (Mark Russinovich), Дэвидом Соломоном (David Solomon) и Алексом Ионеску (Alex Ionescu).

13. Ознакомьтесь с дополнительными ресурсами по отладке

Другие ресурсы включают следующие книги и видео:

  • Отладка в Windows: стратегии практической отладки и трассировки Тарика Соулами
  • Расширенная отладка Windows : Марио Хевардт (Mario Hewardt) и Даниэль Прават (Daniel Pravat)
  • Серия видео о средствах defrag, эпизоды с 13 по 29, все о WinDbg

См.

также раздел

  • Начало работы с WinDbg (режим ядра)
  • Начало работы с WinDbg (пользовательский режим)
  • Выбор 32-разрядных или 64-разрядных средств отладки
  • Среды отладки
  • Настройка отладки (режим ядра и пользовательский режим)
  • Отладка универсальных драйверов — пошаговая лабораторная работа (режим эхо-ядра)
  • Отладка драйверов — пошаговая лабораторная работа (режим ядра Sysvad)

Начало работы с отладкой Windows — драйверы Windows

  • Статья
  • 5 минут на чтение

В этой статье рассказывается, как начать отладку для Windows. Если вы хотите использовать отладчик для анализа аварийного дампа, см. раздел Анализ файлов аварийного дампа с помощью WinDbg.

Чтобы начать отладку Windows, выполните следующие действия.

1. Определите хост и целевую систему

Две отдельные компьютерные системы обычно используются для отладки, поскольку выполнение инструкций на процессоре обычно приостанавливается во время процесса. Отладчик работает в системе хоста , а код, который требуется отладить, выполняется в системе target .

Хост <------------------------------- -----> Цель

В некоторых случаях можно использовать виртуальную машину в качестве второй системы. Например, виртуальный ПК может работать на том же ПК, что и код, который необходимо отлаживать. Однако, если ваш код взаимодействует с низкоуровневым оборудованием, использование виртуального ПК может быть не лучшим подходом. Дополнительные сведения см. в разделе Настройка сетевой отладки виртуальной машины — KDNET.

2. Определите тип отладчика: режим ядра или пользовательский режим

Далее необходимо определить, следует ли использовать отладку режима ядра или пользовательского режима.

  • Операционная система и привилегированные программы работают в режиме ядра . Код режима ядра имеет разрешение на доступ к любой части системы и не имеет ограничений, как код пользовательского режима. Код режима ядра может получить доступ к любой части любого другого процесса, работающего как в пользовательском режиме, так и в режиме ядра. Большая часть основных функций ОС и многие драйверы аппаратных устройств работают в режиме ядра.

  • Приложения и подсистемы на компьютере работают в пользовательском режиме . Процессы, работающие в пользовательском режиме, делают это в своих собственных виртуальных адресных пространствах. Им запрещен прямой доступ ко многим частям системы, включая системное оборудование, память, которая не выделена для их использования, и другим частям системы, которые могут нарушить целостность системы. Процессы, работающие в пользовательском режиме, эффективно изолированы от системы и других процессов пользовательского режима, поэтому они не могут вмешиваться в эти ресурсы.

Если вашей целью является отладка драйвера, определите, является ли этот драйвер драйвером режима ядра или драйвером пользовательского режима. Драйверы Windows Driver Model (WDM) и Kernel-Mode Driver Framework (KMDF) являются драйверами режима ядра. Как следует из названия, драйверы User-Mode Driver Framework (UMDF) — это драйверы пользовательского режима.

В некоторых случаях бывает сложно определить, в каком режиме выполняется код. В этом случае вам может потребоваться выбрать один режим и посмотреть, какая информация доступна в этом режиме. Некоторые проблемы требуют использования отладчика как в пользовательском режиме, так и в режиме ядра.

В зависимости от того, в каком режиме выполняется отладка, может потребоваться настроить и использовать отладчики по-разному. Некоторые команды отладки работают одинаково в обоих режимах, а некоторые команды работают по-разному.

Подробнее об использовании отладчика в режиме ядра:

  • Начало работы с WinDbg (режим ядра)
  • Отладка универсальных драйверов: пошаговая лабораторная работа (режим эхо-ядра)
  • Отладка драйверов: пошаговая лабораторная работа (режим ядра Sysvad)

Дополнительные сведения об использовании отладчика в пользовательском режиме:

  • Начало работы с WinDbg (пользовательский режим)

3.

Выберите среду отладчика

Отладчик WinDbg хорошо работает в большинстве ситуаций, но бывают случаи, когда вам может понадобиться использовать другой отладчик, например консольные отладчики для автоматизации или Visual Studio. Дополнительные сведения см. в разделе Среды отладки.

4. Определите, как соединить цель и хост

Как правило, целевая и хост-системы соединены сетью Ethernet. Если вы выполняете предварительную подготовительную работу или у вас нет Ethernet-подключения к устройству, доступны другие варианты сетевого подключения. Дополнительные сведения см. в следующих статьях:

  • Автоматическая настройка отладки сетевого ядра KDNET
  • Настройка сетевой отладки виртуальной машины — KDNET

5. Выберите 32-разрядные или 64-разрядные средства отладки

Нужен ли вам 32-разрядный или 64-разрядный отладчик, зависит от версии Windows, работающей на целевой и основной системах, а также от того, отлаживаете ли вы 32-разрядный или 64-разрядный код. Дополнительные сведения см. в разделе Выбор 32-разрядных или 64-разрядных средств отладки.

6. Настройка символов

Чтобы использовать все дополнительные функции, предоставляемые WinDbg, необходимо загрузить соответствующие символы. Файлы символов содержат данные, которые могут быть полезны в процессе отладки. Если символы настроены неправильно, они будут недоступны, когда вы попытаетесь использовать функции, зависящие от символов. Дополнительные сведения см. в разделе Символы для отладки Windows (WinDbg, KD, CDB, NTSD).

7. Настройка исходного кода

Если вашей целью является отладка собственного исходного кода, вам необходимо настроить путь к исходному коду. Дополнительные сведения см. в разделе Исходный путь.

8. Ознакомьтесь с работой отладчика

Чтобы узнать об операциях отладчика для различных задач, см. Работа отладчика. Например, в разделе Загрузка DLL расширений отладчика объясняется, как загружать расширения отладчика. Дополнительные сведения о работе с WinDbg см. в разделе Отладка с помощью WinDbg.

9. Ознакомьтесь с методами отладки

Стандартные методы отладки применимы к большинству сценариев отладки, и примеры включают установку точек останова, проверку стека вызовов и обнаружение утечки памяти. Специализированные методы отладки применяются к определенным технологиям или типам кода. Примеры включают отладку Plug and Play, отладку KMDF и отладку RPC.

10. Используйте справочные команды отладчика

При работе в отладчике можно использовать различные команды отладки. Используйте команду .hh в отладчике, чтобы отобразить справочную информацию о любой команде отладки. Дополнительные сведения о доступных командах см. в справочнике по отладчику.

11. Используйте расширения отладки для конкретных технологий

Существует несколько расширений отладки, которые можно использовать для анализа структур данных, специфичных для предметной области. Дополнительные сведения см. в разделе Специализированные расширения.

В этой документации предполагается, что у вас есть некоторые знания об основных внутренних компонентах Windows. Чтобы узнать больше о внутренних компонентах Windows, включая использование памяти, контекст, потоки и процессы, вы можете просмотреть такие ресурсы, как Windows Internals Марка Руссиновича, Дэвида Соломона и Алекса Ионеску.

13. Ознакомьтесь с дополнительными ресурсами по отладке

Другие ресурсы включают следующие книги и видео:

  • Отладка изнутри Windows: практические стратегии отладки и отслеживания Тарика Соулами
  • Расширенная отладка Windows Марио Хьюардт и Даниэль Прават
  • Инструменты дефрагментации серия видео, эпизоды с 13 по 29, все о WinDbg

См. также

  • Начало работы с WinDbg (режим ядра)
  • Начало работы с WinDbg (режим пользователя)
  • Выберите 32-битные или 64-битные средства отладки
  • Среды отладки
  • Настройка отладки (режим ядра и пользовательский режим)
  • Отладка универсальных драйверов — пошаговая лабораторная работа (режим эхо-ядра)
  • Отладка драйверов — пошаговая лабораторная работа (режим ядра Sysvad)

Начало работы с WinDbg (режим ядра) — драйверы Windows

Редактировать

Твиттер

LinkedIn

Фейсбук

Электронная почта

  • Статья
  • 8 минут на чтение

WinDbg — это отладчик режима ядра и пользовательского режима, включенный в средства отладки для Windows. В этой статье приведены упражнения, которые помогут вам начать использовать WinDbg в качестве отладчика режима ядра.

Сведения о том, как получить средства отладки для Windows, см. в разделе Средства отладки для Windows (WinDbg, KD, CDB, NTSD). После установки инструментов отладки найдите каталоги установки для 64-разрядной (x64) и 32-разрядной (x86) версий инструментов. Например:

  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x86

Настройка отладки в режиме ядра

Среда отладки в режиме ядра обычно состоит из двух компьютеров: хост-компьютера и целевого компьютера . Отладчик запускается на хост-компьютере, а отлаживаемый код запускается на целевом компьютере. Хост и цель соединены отладочным кабелем.

Отладчики Windows поддерживают следующие типы кабелей:

  • Ethernet
  • USB 2.0/USB 3.0
  • Серийный номер (также называемый нуль-модемом)

Для обеспечения скорости и надежности следует использовать кабель Ethernet с концентратором локальной сети. На следующей диаграмме показаны хост и целевой компьютер, подключенные для отладки с помощью кабеля Ethernet.

Для более старых версий Windows можно использовать прямой кабель, например кабель USB или последовательный кабель.

Дополнительные сведения о настройке хоста и целевых компьютеров см. в разделе Настройка отладки в режиме ядра вручную.

Виртуальная машина — ВМ

Сведения о подключении отладчика к виртуальной машине Hyper-V см. в разделе Настройка сетевой отладки виртуальной машины — KDNET.

Установка сеанса отладки в режиме ядра

После настройки хоста и целевого компьютера и их соединения отладочным кабелем можно установить сеанс отладки в режиме ядра. Следуйте инструкциям в том же разделе, который вы использовали для настройки. Например, если вы решили настроить хост и целевые компьютеры для отладки через Ethernet, вы можете найти инструкции по установке сеанса отладки в режиме ядра в следующей статье:

  • Автоматическая настройка отладки сетевого ядра KDNET

Начало работы с WinDbg

  1. На главном компьютере откройте WinDbg и установите сеанс отладки в режиме ядра с целевым компьютером.

  2. Чтобы открыть CHM-файл документации отладчика, перейдите в меню Help и выберите Contents . Документация по отладчику также доступна в Интернете в средствах отладки для Windows.

  3. Когда вы устанавливаете сеанс отладки режима ядра, WinDbg может автоматически подключиться к целевому компьютеру. Если WinDbg не взломает, перейдите в меню Debug и выберите Break .

  4. В командной строке внизу окна WinDbg введите следующую команду:

    . симпат срв*

    Вывод аналогичен следующему примеру:

     Путь поиска символа: srv*
    Путь поиска расширенного символа: cache*;SRV*https://msdl.microsoft.com/download/symbols
     

    Путь поиска символов сообщает WinDbg, где искать файлы символов (PDB). Отладчику нужны файлы символов для получения информации о модулях кода, такой как имена функций и имена переменных.

    Введите следующую команду, которая указывает WinDbg выполнить первоначальный поиск и загрузку файлов символов:

    .перезагрузить

  5. Чтобы просмотреть список загруженных модулей, введите следующую команду:

    лм

    Вывод аналогичен следующему примеру:

     0:000>3: кд>лм
    имя начального конечного модуля
    ffff800`00000000 ffff800`00088000 CI (отложено)
    ...
    ffff800`01143000 ffff800`01151000 BasicRender (отложено)
    ffff800`01151000 ffff800`01163000 BasicDisplay (отложено)
    ...
    fffff800`02a0e000 fffff800`03191000 nt (символы pdb) C:\...\ntkrnlmp.pdb
    ffff800`03191000 ffff800`03200000 hal (отложено)
    . ..
     
  6. Чтобы запустить целевой компьютер, введите следующую команду:

    г

  7. Для повторного взлома перейдите в меню Debug и выберите Break .

  8. Введите следующую команду, чтобы проверить тип данных _FILE_OBJECT в модуле nt :

    дт нт!_FILE_OBJECT

    Вывод аналогичен следующему примеру:

     0:000>0: kd> dt nt!_FILE_OBJECT
       +0x000 Тип: Int2B
       +0x002 Размер: Int2B
       +0x008 DeviceObject: Ptr64 _DEVICE_OBJECT
       +0x010 Vpb : Ptr64 _VPB
       ...
       +0x0c0 IrpList: _LIST_ENTRY
       +0x0d0 FileObjectExtension : Ptr64 Пусто
     
  9. Введите следующую команду, чтобы проверить некоторые символы в модуле nt :

    х нт!*СоздатьПроцесс*

    Вывод аналогичен следующему примеру:

     0:000>0: kd> x nt!*CreateProcess*
    ffff800`030821cc nt!ViCreateProcessCallbackInternal (<информация о параметре отсутствует>)
    . ..
    ffff800`02e03904 nt!MmCreateProcessAddressSpace (<информация о параметре отсутствует>)
    fffff800`02cece00 nt!PspCreateProcessNotifyRoutine = <информация о типе отсутствует>
    ...
     
  10. Введите следующую команду, чтобы установить точку останова на MmCreateProcessAddressSpace :

    но!MmCreateProcessAddressSpace

    Чтобы убедиться, что точка останова установлена, введите следующую команду:

    бл

    Вывод аналогичен следующему примеру:

     0:000>0: kd> bu nt!MmCreateProcessAddressSpace
    0: кд > бл
    0 e ffff800`02e03904 0001 (0001) nt!MmCreateProcessAddressSpace
     

    Введите g, чтобы запустить целевой компьютер.

  11. Если целевой компьютер не сразу подключается к отладчику, выполните несколько действий на целевом компьютере (например, откройте Блокнот). Целевой компьютер подключится к отладчику при вызове MmCreateProcessAddressSpace . Чтобы увидеть трассировку стека, введите следующие команды:

    . перезагрузить

    к

    Вывод аналогичен следующему примеру:

     0:000>2: кд> к
    Сайт вызова Child-SP RetAddr
    ffffd000`224b4c88 fffff800`02d96834 nt!MmCreateProcessAddressSpace
    ffffd000`224b4c90 ffff800`02dfef17 nt!PspAllocateProcess+0x5d4
    ffffd000`224b5060 ffff800`02b698b3 nt!NtCreateUserProcess+0x55b
    ...
    000000d7`4167fbb0 00007ffd`14b064ad KERNEL32!BaseThreadInitThunk+0xd
    000000d7`4167fbe0 00000000`00000000 ntdll!RtlUserThreadStart+0x1d
     
  12. В меню Вид выберите Разборка .

    В меню Debug выберите Step Over (или нажмите F10 ). Введите пошаговые команды еще несколько раз, наблюдая за окном дизассемблирования.

  13. Очистите точку останова, введя следующую команду:

    до н.э *

    Введите g, чтобы запустить целевой компьютер. Чтобы снова войти, перейдите в меню Debug и выберите Break или нажмите CTRL-Break .

  14. Чтобы просмотреть список всех процессов, введите следующую команду:

    !процесс 0 0

    Вывод аналогичен следующему примеру:

     0:000>0: кд> !процесс 0 0
    **** ДАМП АКТИВНОГО ПРОЦЕССА NT ****
    ПРОЦЕСС
        SessionId: нет Cid: 0004 Peb: 00000000 ParentCid: 0000
        DirBase: 001aa000 ObjectTable: ffffc00000003000 HandleCount: <данные недоступны>
        Изображение: Система
    ПРОЦЕСС00
        SessionId: нет Cid: 0124 Peb: 7ff7809df000 ParentCid: 0004
        DirBase: 100595000 ObjectTable: ffffc000002c5680 HandleCount: <данные недоступны>
        Изображение: smss.exe
    ...
    ПРОЦЕСС ffffe00000d52900
        SessionId: 1 Cid: 0910 Peb: 7ff669b8e000 ParentCid: 0a98
        DirBase: 3fdba000 ObjectTable: ffffc00007bfd540 HandleCount: <данные недоступны>
        Изображение: explorer.exe
     
  15. Скопируйте адрес одного процесса и введите следующую команду:

    !процесс Адрес 2

    Например: !процесс ffffe00000d5290 2

    В выходных данных показаны потоки в процессе.

     0:000>0:000>0: kd> !процесс ffffe00000d52900 2
    ПРОЦЕСС ffffe00000d52900
        SessionId: 1 Cid: 0910 Peb: 7ff669b8e000 ParentCid: 0a98
        DirBase: 3fdba000 ObjectTable: ffffc00007bfd540 HandleCount:
        Изображение: explorer.exe
            РЕЗЬБА ffffe00000a0d880 Cid 0910.090c Teb: 00007ff669b8c000
                ffffe00000d57700 событие синхронизации
            РЕЗЬБА ffffe00000e48880 Cid 0910.0ad8 Теб: 00007ff669b8a000
                ffffe00000d8e230 Событие уведомления
                ffffe00000cf6870 Ограничение семафора 0xffff
                ffffe000039c48c0 событие синхронизации
            ...
            РЕЗЬБА ffffe00000e6d080 Cid 0910.0cc0 Теб: 00007ff669a10000
                ffffe0000089a300 ОчередьОбъект
     
  16. Скопируйте адрес одного потока и введите следующую команду:

    !поток Адрес

    Например: !нить ffffe00000e6d080

    Вывод показывает информацию об отдельном потоке.

     0: kd> !поток ffffe00000e6d080
    THREAD ffffe00000e6d080 Cid 0910. 0cc0 Teb: 00007ff669a10000 Win32Thread: 0000000000000000 WAIT: ...
        ffffe0000089a300 ОчередьОбъект
    Не выдавать себя за другое
    Карта устройства ffffc000034e7840
    Процесс-владелец ffffe00000d52900 Изображение: explorer.exe
    Прикрепленный процесс Н/Д Изображение: Н/Д
    Ожидание запуска TickCount 13777 Тактов: 2 (0:00:00:00.031)
    Счетчик переключений контекста 2 IdealProcessor: 1
    Время пользователя 00:00:00.000
    Время ядра 00:00:00.000
    Стартовый адрес Win32 ntdll!TppWorkerThread (0x00007ffd14ab2850)
    Инициализация стека ffffd00021bf1dd0 Текущий ffffd00021bf1580
    База ffffd00021bf2000 Лимит ffffd00021bec000 Call 0
    Priority 13 BasePriority 13 UnusualBoost 0 ForegroundBoost 0 IoPriority 2 PagePriority 5
    ...
     
  17. Чтобы просмотреть все узлы устройств в дереве устройств Plug and Play, введите следующую команду:

    !devnode 0 1

     0:000>0: kd> !devnode 0 1
    Сброс IopRootDeviceNode (= 0xffffe000002dbd30)
    DevNode 0xffffe000002dbd30 для PDO 0xffffe000002dc9e0
      InstancePath — "HTREE\ROOT\0"
      Состояние = DeviceNodeStarted (0x308)
      Предыдущее состояние = DeviceNodeEnumerateCompletion (0x30d)
      DevNode 0xffffe000002d9d30 для PDO 0xffffe000002daa40
        InstancePath — "ROOT\volmgr\0000"
        Имя_службы — «volmgr». 
        Состояние = DeviceNodeStarted (0x308)
        Предыдущее состояние = DeviceNodeEnumerateCompletion (0x30d)
        DevNode 0xffffe00001d49290 для PDO 0xffffe000002a9a90
          InstancePath: "STORAGE\Volume\{3007dfd3-df8d-11e3-824c-806e6f6e6963}#0000000000100000"
          Имя_службы — «volsnap».
          Список уведомлений TargetDeviceNotify — f 0xffffc0000031b520 b 0xffffc0000008d0f0
          Состояние = DeviceNodeStarted (0x308)
          Предыдущее состояние = DeviceNodeStartPostWork (0x307)
    ...
     
  18. Чтобы просмотреть узлы устройств и их аппаратные ресурсы, введите следующую команду:

    !devnode 0 9

     0:000>...
            DevNode 0xffffe000010fa770 для PDO 0xffffe000010c2060
              InstancePath — «PCI\VEN_8086&DEV_29».37&SUBSYS_2819103C&REV_02\3&33fd14ca&0&D0"
              ServiceName — «usbuhci»
              Состояние = DeviceNodeStarted (0x308)
              Предыдущее состояние = DeviceNodeEnumerateCompletion (0x30d)
              TranslatedResourceList по адресу 0xffffc00003c78b00 Версия 1. 1 Интерфейс 0x5 Шина #0
                Запись 0 — Порт (0x1) Эксклюзивно для устройства (0x1)
                  Флаги (0x131) — PORT_MEMORY PORT_IO 16_BIT_DECODE POSITIVE_DECODE
                  Диапазон начинается с 0x3120 для 0x20 байт.
                Запись 1 — DevicePrivate (0x81) Эксклюзивно для устройства (0x1)
                  Флаги (0000) -
                  Данные — {0x00000001, 0x00000004, 0000000000}
                Запись 2 — Прерывание (0x2) Общий (0x3)
                  Флаги (0000) – LEVEL_SENSITIVE
                  Уровень 0x8, Вектор 0x81, Группа 0, Сходство 0xf
    ...
     
  19. Чтобы просмотреть узел устройства со служебным именем disk , введите следующую команду:

    !devnode 0 1 диск

     0: kd> !devnode 0 1 диск
    Сброс IopRootDeviceNode (= 0xffffe000002dbd30)
    DevNode 0xffffe0000114fd30 для PDO 0xffffe00001159610
      InstancePath: "IDE\DiskST3250820AS_____________________________3.CHL___\5&14544e82&0&0.0.0"
      ServiceName — «диск»
      Состояние = DeviceNodeStarted (0x308)
      Предыдущее состояние = DeviceNodeEnumerateCompletion (0x30d)
    . ..
     
  20. Вывод !devnode 0 1 показывает адрес объекта физического устройства (PDO) для узла. Скопируйте адрес объекта физического устройства (PDO) и введите следующую команду:

    !devstack PdoAddress

    Например: !devstack 0xffffe00001159610

     0:000>0: kd> !devstack 0xffffe00001159610
      !DevObj !DrvObj !DevExt ИмяОбъекта
      ffffe00001d50040 \Драйвер\partmgr ffffe00001d50190
      ffffe00001d51450 \Драйвер\диск ffffe00001d515a0 DR0
      ffffe00001156e50 \Драйвер\ACPI ffffe000010d8bf0
     
  21. Чтобы получить информацию о драйвере disk.sys, введите следующую команду:

    !drvobj диск 2

     0:000>0: kd> !drvobj диск 2
    Объект драйвера (ffffe00001d52680) предназначен для:
     \Драйвер\диск
    DriverEntry: диск ffff800006b1270!GsDriverEntry
    Драйверстартйо: 00000000
    DriverUnload: fffff800010b0b5c CLASSPNP!ClassUnload
    AddDevice: fffff800010aa110 CLASSPNP!ClassAddDevice
    Процедуры отправки:
    [00] IRP_MJ_CREATE fffff8000106d160 CLASSPNP!ClassGlobalDispatch
    [01] IRP_MJ_CREATE_NAMED_PIPE fffff80002b0ab24 nt!IopInvalidDeviceRequest
    [02] IRP_MJ_CLOSE fffff8000106d160 CLASSPNP!ClassGlobalDispatch
    [03] IRP_MJ_READ fffff8000106d160 CLASSPNP!ClassGlobalDispatch
    . ..
    [1b] IRP_MJ_PNP fffff8000106d160 CLASSPNP!ClassGlobalDispatch
     
  22. Выходные данные !drvobj показывают адреса подпрограмм отправки. Например, CLASSPNP!ClassGlobalDispatch . Чтобы установить и проверить точку останова на ClassGlobalDispatch , введите следующие команды:

    или CLASSPNP!ClassGlobalDispatch

    бл

    Введите g , чтобы запустить целевой компьютер.

    Если целевой компьютер не сразу подключается к отладчику, выполните несколько действий на целевом компьютере (например, откройте Блокнот и сохраните файл). Целевой компьютер подключится к отладчику, когда Вызывается ClassGlobalDispatch . Чтобы увидеть трассировку стека, введите следующие команды:

    .перезагрузить

    к

    Вывод аналогичен следующему примеру:

     2: кд > к
    Сайт вызова Child-SP RetAddr
    ffffd000`21d06cf8 ffff800`0056c14e CLASSPNP!ClassGlobalDispatch
    ffffd000`21d06d00 ffff800`00f2c31d volmgr!VmReadWrite+0x13e
    ffffd000`21d06d40 ffff800`0064515d fvevol!FveFilterRundownReadWrite+0x28d
    ffffd000`21d06e20 ffff800`0064578b rdyboost!SmdProcessReadWrite+0x14d
    ffffd000`21d06ef0 ffff800`00fb06ad rdyboost!SmdDispatchReadWrite+0x8b
    ffffd000`21d06f20 ffff800`0085cef5 volsnap!VolSnapReadFilter+0x5d
    ffffd000`21d06f50 fffff800`02b619f7 Ntfs!NtfsStorageDriverCallout+0x16
    .

Читайте также: