понедельник, 14 января 2013 г.

Release 0.2.0.14

Почти год прошел с момента прошлого релиза ( май 2012 ). Но мы не сидели сложа руки. Все это время мы напряженно работали над новой версией pykd - 0.2.x. В этой версии мы полностью переработали архитектуру. И хотя, возможно, список изменений и нововведений не покажется впечатляющим, но внутреннее устройство претерпело кардинальные изменения. Результат на наш взгляд крайне положительный: pykd стал быстрее и стабильнее, заложены архитектурные решения, которые позволят развивать проект дальше.

Скачать новую версию можно здесь. Обратите внимание: появились инсталляторы с поддержкой python 2.7. Рекомендуем именно эту версию.

Начнем обзор нововведений:

CTRL+BREAK
При работе в windbg зависший скрипт теперь можно остановить с помощью комбинации клавиш CTRL+BREAK. Отлаживать скрипты стало удобнее.

Функция writeDump
Создает файл креш-дампа

loadModule
Данная функции была удалена из API. Вместо нее нужно пользоваться конструктором класса module.

Новые методы класса module:
enumSymbols - возвращает список отладочных символов для данного модуля
getVersion - возвращает версию модуля ( из ресурсов )
queryVersion - возвращает дополнительные параметры версии модуля ( например, copyright ) из ресурсов

Новые функции для работы с памятью:
getVaProtect - возвращает атрибуты защиты страницы виртуальной памяти
findMemoryRegion - поиск непрерывного региона виртуальной памяти

Класс typeBuilder
Вспомогательный класс для создания собственных типов.

Отладочные события
Функции обратного вызова, используемые для обработки отладочных событий теперь должны возвращать другие значения:
Proceed - продолжить выполнение
NoChange - не менять статус отладчика ( имеет смысл при наличии нескольких обработчиков )
Break - остановить отладчик.
Также можно вернуть:
True - остановить отладчик
False - не менять статус отладчика

Новые методы класса typeInfo
ptrTo - создает новый экземпляр класса typeInfo - указатель на оригинальный тип
arrayOf - создает новый экземпляр класса typeInfo - массив элементов оригинального типа и указанного размера

Доступ к полям по указателю на структуру
Раньше необходимо было выполнить разыменование указателя:
print structPtr.deref().structField
Теперь можно опустить вызов deref():
print structPtr.structField

Функция getStackTraceWow64
Возвращает WOW64 часть стека

Функция getProcessThreads
Возвращает список потоков для отлаживаемого процесса ( только для User Mode ).

Вот такой краткий список изменений.
За более подробной информацией обращаемся сюда:
Руководство пользователя
Руководство для начинающих
Справочник по API
Если кому то документация кажется неполной/неправильной/не подробной - пожалуйста, сообщите нам. А лучше, помогите исправить! Так же очень нужен качественный перевод на английский язык.

Что будет дальше? Во-первых, в ближайшее время мы планируем опубликовать несколько новых статей, касающихся новых возможностей pykd. Читайте наш блог, следите за нами в Twitter. Во-вторых, разработка не оканчивается, в ближайшее время будут выпущены версии 0.2.0.15, 16, ... с исправлениями ошибок и незначительными доработками. В-третьих после выполнения всех задач по доработкам 0.2.x будет начата работа над 0.3.x.

На сегодня - все. Как всегда, большое спасибо нашим пользователям! Ждем от вас комментариев, замечаний и предложений! И громадное спасибо нашим разработчикам!!!

Комментариев нет:

Отправить комментарий