среда, 26 января 2011 г.

Скрипты для windbg

Целью проекта pykd является интеграция python в windbg. А целью интеграции python в windbg - замена стандартного скриптового движка на более удобный. А удобный скриптовый движок нам нужен, чтобы быстро и легко автоматизировать свои действия. По-моему, так?

В данном посте я хочу предствить ряд скриптов, написанных с помощью pykd, которые могут пригодится в повседневной работе многим. Описание их работы есть в wiki на сайте проекта ( ссылка ) и я не буду репостить текст. Допустим вы уже прочитали статью с wiki и уже хотите попробовать. Где взять сами скрипты? Через дистрибутив они не распространяются, единственный способ - скачать из репозитория исходного кода ( ссылка ). В каталоге samples лежат, как не трудно догадаться, разные демонстрационный примеры. А в каталоге snippets - как раз то, что мы ищем. Допустим вы скачали исходный код, куда теперь распаковать каталоги со скриптами? Это не важно - в любой каталог, куда есть доступ. Для удобства использования настоятельно рекомендуется добавить этот путь в переменную окружения $PYTHONPATH. В этом случае, для вызова скрипта не нужно указывать полный путь, даже расширение можно опустить, примерно так:
!py export nt Zw*SetInformation*

Если вы написали полезный скрпит и хотите поделится им - присылайте ссылки на опубликованный код или исходный код и мы опубликуем его на сайте проекта под действующий лицензией.

Почта: pykd.codeplex@hotmail.com

5 комментариев:

  1. It works! Writing a blog post... Learning Python now :-)

    ОтветитьУдалить
  2. Большое спасибо за фидбек! Если будут какие то вопросы/проблемы/предложения - пожалуйста, сообщите нам! Особенно ценны для нас будут вопросы "Как сделать..." - мы с радостью продемонстрируем возможности pykd, а при необходимости - дополним API.

    PS: пишу по-русски, так как никнейм намекает, что это язык вам знаком ;).

    ОтветитьУдалить
  3. Добрый день. Как с помощью вашего расширения можно решить следующую задачу:
    Из скрипта на python вызвать windbg или kd, загрузить ему дамп и символы, а затем сделать !analyze -v и вывести результат в файл. Буду очень признателен за ответ.

    ОтветитьУдалить
  4. Загружать 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 )

    ОтветитьУдалить