Введение
WinDbg — многоцелевой отладчик для компьютерной операционной системы Microsoft Windows, распространяемый компанией Microsoft. Отладка — это процесс поиска и устранения ошибок в системе; в области вычислений она также включает в себя исследование внутренней работы программного обеспечения для помощи в разработке. Его можно использовать для отладки приложений в пользовательском режиме, драйверов устройств и самой операционной системы в режиме ядра.
Обзор
Как и более известный отладчик Visual Studio, WinDbg имеет графический пользовательский интерфейс (GUI), но он более мощный и имеет мало общего с ним. WinDbg может автоматически загружать файлы отладочной информации (например, PDB-файлы) с сервера, используя уникальный идентификатор, встроенный в исполняемый файл (с помощью "RSDS Guid") через SymSrv (SymSrv.dll), вместо того, чтобы требовать от пользователей ручного поиска файлов. Если настроен частный сервер символов, символы могут быть сопоставлены с исходным кодом двоичного файла. Это упрощает отладку проблем, возникающих из-за наличия на отлаживаемой системе различных версий двоичных файлов, устраняя необходимость поиска и установки конкретной версии символов на хост-машине отладки. Microsoft предоставляет общедоступный сервер символов, содержащий большинство общедоступных символов для Windows 2000 и более поздних версий Windows (включая пакеты обновлений). WinDbg также можно использовать для отладки дампов памяти ядра, создаваемых после так называемого "синего экрана смерти", который возникает при возникновении проверки ошибок. Он также может использоваться для отладки дампов сбоев пользовательского режима. Это известно как постмортемная отладка. Последние версии WinDbg распространяются как часть бесплатного пакета Debugging Tools for Windows, который использует общий механизм отладки для WinDbg и отладчиков командной строки, таких как KD, CDB и NTSD. Большинство команд можно использовать без изменений со всеми включенными интерфейсами отладчика. В 2017 году Microsoft анонсировала новую версию WinDbg под названием WinDbg Preview (также известный как WinDbgX). Одной из наиболее заметных функций WinDbg Preview является так называемая отладка с перемещением во времени (TTD). Основная идея заключается в том, что пользователь может записывать реальный работающий процесс (с некоторой потерей производительности), чтобы затем отлаживать его, перемещаясь вперед и назад во времени. Эта функция особенно полезна при обратной разработке. Также поддерживается написание скриптов на языке JavaScript.
Расширения
WinDbg позволяет загружать DLL-расширения, которые расширяют набор поддерживаемых команд отладчика и помогают в отладке конкретных сценариев: например, отображение документа MSXML по объекту IXMLDOMDocument или отладка среды выполнения Common Language Runtime (CLR). Эти расширения – важная составляющая мощности WinDbg. Команда разработчиков Microsoft Windows использует WinDbg для разработки Windows, и все необходимое для отладки Windows содержится в этих DLL-расширениях. Команды расширения всегда начинаются с символа «!». Хотя некоторые расширения используются только внутри Microsoft, большинство из них входят в состав общедоступного пакета Debugging Tools for Windows. Документация по модели расширений представлена в файле справки, поставляемом с Debugging Tools for Windows.
Расширение
Ext — это стандартное расширение отладчика Windows, поставляемое вместе с WinDBG и загружаемое по умолчанию.
Анализируйте команду !
Наиболее часто используемая команда — !analyze v, которая анализирует текущее состояние отлаживаемой программы и состояние машины/процесса в момент сбоя или зависания. Эта команда часто способна полностью автоматически отладить текущую проблему. При использовании без параметров, !analyze просто возвращает результаты своего анализа. Параметры v и vv предоставляют более подробную информацию об этом анализе.
Wow6432exts.dll (протокол)
Wow6432exts — это стандартное расширение отладчика Windows, поставляемое вместе с WinDBG. Оно используется для отладки процессов, работающих в среде WoW64 (32-битные процессы, выполняемые в 64-битной Windows).
SOS.dll
Расширение отладки SOS (Son of Strike) (SOS.dll) помогает отлаживать управляемые программы в Visual Studio и WinDbg, предоставляя информацию о внутренней среде среды выполнения общего языка (CLR). Для работы этого инструмента в проекте должна быть включена отладка неуправляемого кода. SOS.dll автоматически устанавливается вместе с .NET Framework. Чтобы использовать SOS.dll в Visual Studio, установите комплект драйверов Windows (WDK). Для отладки процесса или дампа памяти версия SOS.dll должна соответствовать версии .NET Framework. Psscor2 и Psscor4 являются расширенными версиями SOS.
Psscor2.dll
Psscor2 — это расширение отладчика Windows, предназначенное для отладки приложений .NET Framework, использующих .NET CLR версии 2.0 (.NET Framework версий 2–3.5). Psscor2 был разработан в Microsoft для внутреннего использования в составе инструментов службы поддержки продуктов. Хотя Microsoft выпустила Psscor2 только в 2010 году, отдельные команды из этого расширения публиковались компанией за несколько лет до этого, что затрудняло следование их инструкциям.
Psscor4.dll
Psscor4 — расширение Windows Debugger, используемое для отладки приложений .NET Framework 4.
Соединение с виртуальными машинами
WinDbg позволяет отлаживать ядро Microsoft Windows, работающее на виртуальной машине VMware, VPC или Parallels, с использованием именованного канала. Это достигается посредством виртуального COM-порта. В случае VMware и VirtualBox расширение VirtualKD добавляет нативную поддержку отладки виртуальных машин в ядро Windows, заявляя об увеличении скорости отладки до 45 раз. Для Windows 8 и более поздних версий предусмотрена отладка ядра по сети, обеспечивающая быструю отладку ядра без специальной настройки.
Протокол
Протокол WinDbg не задокументирован, но поддерживается дизассемблерами IDA Pro и radare2.