Режим отладки 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
Редактировать
Твиттер
Фейсбук
Электронная почта
- Статья
- 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
На главном компьютере откройте WinDbg и установите сеанс отладки в режиме ядра с целевым компьютером.
Чтобы открыть CHM-файл документации отладчика, перейдите в меню Help и выберите Contents . Документация по отладчику также доступна в Интернете в средствах отладки для Windows.
Когда вы устанавливаете сеанс отладки режима ядра, WinDbg может автоматически подключиться к целевому компьютеру. Если WinDbg не взломает, перейдите в меню Debug и выберите Break .
В командной строке внизу окна WinDbg введите следующую команду:
. симпат срв*
Вывод аналогичен следующему примеру:
Путь поиска символа: srv* Путь поиска расширенного символа: cache*;SRV*https://msdl.microsoft.com/download/symbols
Путь поиска символов сообщает WinDbg, где искать файлы символов (PDB). Отладчику нужны файлы символов для получения информации о модулях кода, такой как имена функций и имена переменных.
Введите следующую команду, которая указывает WinDbg выполнить первоначальный поиск и загрузку файлов символов:
.перезагрузить
Чтобы просмотреть список загруженных модулей, введите следующую команду:
лм
Вывод аналогичен следующему примеру:
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 (отложено) . ..
Чтобы запустить целевой компьютер, введите следующую команду:
г
Для повторного взлома перейдите в меню Debug и выберите Break .
Введите следующую команду, чтобы проверить тип данных
_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 Пусто
Введите следующую команду, чтобы проверить некоторые символы в модуле
nt
:х нт!*СоздатьПроцесс*
Вывод аналогичен следующему примеру:
0:000>0: kd> x nt!*CreateProcess* ffff800`030821cc nt!ViCreateProcessCallbackInternal (<информация о параметре отсутствует>) . .. ffff800`02e03904 nt!MmCreateProcessAddressSpace (<информация о параметре отсутствует>) fffff800`02cece00 nt!PspCreateProcessNotifyRoutine = <информация о типе отсутствует> ...
Введите следующую команду, чтобы установить точку останова на MmCreateProcessAddressSpace :
но!MmCreateProcessAddressSpace
Чтобы убедиться, что точка останова установлена, введите следующую команду:
бл
Вывод аналогичен следующему примеру:
0:000>0: kd> bu nt!MmCreateProcessAddressSpace 0: кд > бл 0 e ffff800`02e03904 0001 (0001) nt!MmCreateProcessAddressSpace
Введите g, чтобы запустить целевой компьютер.
Если целевой компьютер не сразу подключается к отладчику, выполните несколько действий на целевом компьютере (например, откройте Блокнот). Целевой компьютер подключится к отладчику при вызове 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
В меню Вид выберите Разборка .
В меню Debug выберите Step Over (или нажмите F10 ). Введите пошаговые команды еще несколько раз, наблюдая за окном дизассемблирования.
Очистите точку останова, введя следующую команду:
до н.э *
Введите g, чтобы запустить целевой компьютер. Чтобы снова войти, перейдите в меню Debug и выберите Break или нажмите CTRL-Break .
Чтобы просмотреть список всех процессов, введите следующую команду:
!процесс 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
Скопируйте адрес одного процесса и введите следующую команду:
!процесс Адрес 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 ОчередьОбъект
Скопируйте адрес одного потока и введите следующую команду:
!поток Адрес
Например:
!нить 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 ...
Чтобы просмотреть все узлы устройств в дереве устройств 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) ...
Чтобы просмотреть узлы устройств и их аппаратные ресурсы, введите следующую команду:
!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 ...
Чтобы просмотреть узел устройства со служебным именем 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) . ..
Вывод !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
Чтобы получить информацию о драйвере 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
Выходные данные
!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
.