Отладчик WinDbg поддерживает сторонние библиотеки расширений. Это обычные динамические библиотеки, которые можно писать на любом языке программирования. Их полезность сомнительна, учитывая возможность написания скриптов, но мне стало интересно, и я написал свою.
Изначально, идея зародилась после прочтения статьи в NT-Insider'е Making WinDbg Your Friend - Creating Debugger Extensions . Статья описывает базовые принципы и синтаксис написания, поэтому на них я заострять внимание не буду.
Установка расширения очень проста: копируем файл с библиотекой расширения kdek_ext.dll в поддиректорию winext директории, куда установлен WinDbg. После этого можно исполнять новые команды синтаксисом: !<имя библиотеки>.<имя команды>. В случае моей библиотеки, первой командой стоит выполнить !kdek_ext.help. Несложно догадаться, что на экран распечатается помощь со списком команд и кратким описанием.
Реализованные команды:
mjfunc | печать кода IRP_MJ_XXX по численному значению |
ipaddr | печать 4-х байтового значения, как IPv4-адреса |
status2err | конвертирование NT-статуса в Win32-код ошибки |
err2status | вывод NT-статусов, соответствующих указанной Win32-ошибке |
sect2fo | получение указателя на файл по указателю на объект секцию |
syncobj | печать содержимого синхро-объекта |
foattr | печать файловых атрибутов, как текста (FILE_ATTRIBUTE_XXX) |
ioobj | печать содержимого объекта менеджера ввода/вывода |
lpcmsg | вывод содержимого LPC-сообщения |
guid | печать содержимого GUID'а |
wmsg | печать оконного сообщения по его коду |
P.S.: Исходный код, если кто-то заинтересуется, могу открыть - пишите.
ΞρεΤΙκ