Целью проекта pykd является интеграция python в windbg. А целью интеграции python в windbg - замена стандартного скриптового движка на более удобный. А удобный скриптовый движок нам нужен, чтобы быстро и легко автоматизировать свои действия. По-моему, так?
В данном посте я хочу предствить ряд скриптов, написанных с помощью pykd, которые могут пригодится в повседневной работе многим. Описание их работы есть в wiki на сайте проекта ( ссылка ) и я не буду репостить текст. Допустим вы уже прочитали статью с wiki и уже хотите попробовать. Где взять сами скрипты? Через дистрибутив они не распространяются, единственный способ - скачать из репозитория исходного кода ( ссылка ). В каталоге samples лежат, как не трудно догадаться, разные демонстрационный примеры. А в каталоге snippets - как раз то, что мы ищем. Допустим вы скачали исходный код, куда теперь распаковать каталоги со скриптами? Это не важно - в любой каталог, куда есть доступ. Для удобства использования настоятельно рекомендуется добавить этот путь в переменную окружения $PYTHONPATH. В этом случае, для вызова скрипта не нужно указывать полный путь, даже расширение можно опустить, примерно так:
!py export nt Zw*SetInformation*
Если вы написали полезный скрпит и хотите поделится им - присылайте ссылки на опубликованный код или исходный код и мы опубликуем его на сайте проекта под действующий лицензией.
Почта: pykd.codeplex@hotmail.com
Testing now!
ОтветитьУдалитьIt works! Writing a blog post... Learning Python now :-)
ОтветитьУдалитьБольшое спасибо за фидбек! Если будут какие то вопросы/проблемы/предложения - пожалуйста, сообщите нам! Особенно ценны для нас будут вопросы "Как сделать..." - мы с радостью продемонстрируем возможности pykd, а при необходимости - дополним API.
ОтветитьУдалитьPS: пишу по-русски, так как никнейм намекает, что это язык вам знаком ;).
Добрый день. Как с помощью вашего расширения можно решить следующую задачу:
ОтветитьУдалитьИз скрипта на python вызвать windbg или kd, загрузить ему дамп и символы, а затем сделать !analyze -v и вывести результат в файл. Буду очень признателен за ответ.
Загружать windbg не нужно. pykd может работать вне windbg. Единственная сложность - нужно загружать расширения ( к примеру !analyze - это команда расширения ext ) вручную ( при работе в windbg они обычно загружаются автоматически ). Вот так примерно это можно сделать:
ОтветитьУдалить>>> import pykd
>>> pykd.loadDump(r"C:\1.dmp")
>>> ext = pykd.loadExt( r"C:\Program Files\Debugging Tools for Windows (x64)\winext\ext.dll")
>>> print pykd.dbgCommand("!analyze -v")
Конечно, в нормальном скрипте, путь к расширениями лучше вынести в файл настроек или поместить например в переменную окружения. Есть еще один нюанс: pykd.loadExt возвратит объект, который при удалении выгрузит указанное расширение. Поэтому приходится держать на него ссылку ( см. переменную ext )