Показаны сообщения с ярлыком pykd. Показать все сообщения
Показаны сообщения с ярлыком pykd. Показать все сообщения

пятница, 9 декабря 2011 г.

PyKd: Boost.Python build cmd

В который раз потребовалось собрать библиотеку и как это обычно бывает весьма не кстати потерялся командный файл упрощающий этот процесс.
Пришлось всё делать сначала. В итоге получился командный файл для сборки библиотеки Boost.Python, который также можно использовать в качестве шаблона для сборки необходимых boost-библиотек:

::
:: Build x86/x64 Boost.Python library
::
call :ExecBjam 32
call :ExecBjam 64
pause
goto :EOF

::
:: Execute bjam.exe with required params
::
:ExecBjam
set arch=%1
set stagedir=stage

if "%arch%"=="64" set stagedir=stage64

bjam.exe ^
    -j 2 ^
    --toolset=msvc-9.0 ^
    release debug ^
    threading=multi link=static runtime-link=shared ^
    address-model=%arch% ^
    --with-python --with-date_time ^
    --stagedir=%stagedir% ^
    stage
goto :EOF

Краткое пояснение:
  • call :ExecBjam XX - сборка для i386 и amd64
  • -j N - задействовать N ядер
  • --toolset=msvc-9.0 - Visual Studio 2008
  • threading=multi - сборка с поддержкой многопоточности
  • --with-python - При сборке я предпочитаю использовать --with-libname вместо --without-libname, т.к. в этом случае будут скомпилированы только указанные библиотеки (что бы не собирать неиспользуемые библиотеки)
  • link=static - собрать статическую версию библиотек
  • runtime-link=shared - динамическая линковка с Visual C++ Runtime
  • --stagedir=stage%arch% - директория для выходных файлов (stage для x86 и stage64 для и x64)

понедельник, 23 мая 2011 г.

Установка pykd (updated)

Начиная с версии 0.0.17, расширения pykd, был существенно переработан инсталлятор. Не смотря на то, что релиз состоялся более месяца тому, данная публикация не утратила своей актуальности.

Попав в раздел Downloads, главной страницы проекта, можно немного растеряться. Поэтому, приведу краткое описание возможных вариантов:
  • pykd-0.0.XX-python-2.6.zip - расширение без каких-либо дополнительных файлов. Для работы требуется Microsoft Visual C++ 2005 SP1 Redistributable Package и Python 2.6.
  • pykd_x86_0.0.0.XX_setup.exe - инсталлятор для 32-х битной версии WinDbg.
  • pykd_x64_0.0.0.XX_setup.exe - инсталлятор для 64-х битной версии WinDbg.
  • pykd-0.0.XX-python-2.7-vc90.zip - то же что и первый пункт, но для работы требуется Microsoft Visual C++ 2008 Redistributable Package и Python 2.7.

Расширение из архива устанавливается вручную.

Далее будет рассмотрено как это сделать с помощью инсталлятора.

Перед тем как продолжить, хочу обратить особое внимание на то что разрядность pykd, соответственно, Python, VC++ Runtime и инсталлятора должна соответствовать разрядности WinDbg. Например, Вы ставите 64-х битную версию расширения и у Вас уже стоит Python для x86. Расширение не будет работать если не установить соответствующую версию Python как предложит инсталлятор.

Возможности инсталлятора:
  • Собственно, установка расширения.
  • Установка скриптов и примеров (в директорию Мои документы\pykd).
  • Добавление пути к директории скриптов в PYTHONPATH. Что бы не вводить полный путь к нужному скрипту.
  • Добавление пути к расширению в PYTHONPATH. Для использования pykd из интерпретатора Python.
  • Проверка наличия Python-а и VC++ Runtime. При необходимости автоматическая загрузка и установка.
  • Запоминание директории установки расширения.
Возможности деинсталлятора:
  • Удаление расширения.
  • Опционально, удаление Python и VC++ Runtime.

воскресенье, 10 апреля 2011 г.

Отладка STL контейнера map в WinDbg

Проблема

Довольно часто во время отладки или анализа креш-дампов требуется узнать содержимое контейнера map. Насколько мне известно, WinDbg для этого не предоставляет никаких средств.

Решение

Решить задачу можно несколькими способами:
  • Зная внутреннюю структуру контейнера вручную найти необходимые смещения структур в памяти;
  • Создать своё расширение отладчика;
  • Воспользоваться возможностями расширения pykd.

суббота, 19 марта 2011 г.

Установка pykd (Python WinDbg extension)

Данный пост посвящён установке pykd. Что такое pykd и как им пользоваться можно узнать на домашней странице проекта а так же из блога разработчиков.

Начиная с версии 0.0.17 был обновлён инсталлятор, актуальное описание процесса установки здесь.

Инсталлятор присутствует для 2-х платформ: x86 и x64. Разрядность pykd и инсталлятора должна соответствовать разрядности WinDbg. В качестве примера будет рассмотрена установка 64-х битной версии pykd.