Что это такое???

Karmadbg - это отладчик для native кода на плафторме Windows. Он написан целиком на языке python, в качестве ядра отладчика используется компонент pykd. Основная аудитория - это опытные пользователи Windbg, знакомые с техникой написания скриптов. Разработка karmadbg преследует две основных цели: 1) Сделать максимально гибкий, расширяемый и конфигурируемый под нужды пользователя инструмент. По сути, это не просто отладчик, а платформа для интеграции различных отладочных средств. 2) Дать инструмент для автоматизации рутинных действий.

Karmadbg может использоваться для всех областей, где мы используем Windbg: отладка x86 и x64 полтзовательских приложений, отладка редима ядра, анализ аварийных дампов. Karmadbg может использовать сторонние расширения для windbg ( кроме разве что pykd ). Если вы - опытный пользователь windbg, попробуйте KarmaDbg прмяо сейчас - вы не испытаете никаких сложностей. Если вы хотели попробовать pykd для написания отладочных скриптов - вам просто необходим karmadbg, он создан специально для этого! Отлаженные с Karmadbg скрипты будут потом без проблем работать с Windbg + pykd.

Установи меня!

Это просто. Нужно иметь Windows машину с Python 2.7 и установленным менеджер пакетов pip ( easy_install пока? не поддерживается ). Если с этим вопросов не возникло, то просто запускаем инсталляцию пакета:
C:\Python27\Scripts>pip install karmadbg

Во время инсталляции будут установлены зависимости: PySide и pykd ( если их не было до этого ).

Если все прошло хорошо, на экране мы увидим:
Installing collected packages: karmadbg
Successfully installed karmadbg
Cleaning up...

И значит можно переходить к запуску:

Попробуй меня!!

C:\Python27\Scripts>karmadbg_ui.pyw

karmadbg.png

Используй меня!!!

Поддержка Python

Первое, что мы видим, это консоль python. Она максимально приближена к "ванильной" REPL python, но имеет ряд расширений, специфичных для использования в отладчике. Пробуем конечно:
>>>print "Hello world"
Hello world
>>>2+2
4

Интегрированный модуль pykd

Karmadbg для отладки приложений использует пакет pykd. Естественно, его можно использовать и из консоли. Для удобства он уже импортирован, можно сразу вызывать его функции:
>>>startProcess("notepad.exe")
0
>>>print hex( module("ntdll").begin() )
0x77350000
>>>go()

Поддержка команд и расширений windbg

Использовать команды windbg можно в той же консоли, ничего переключать не надо. Правила "общежития" с python интерпретатором такие: если команда начинается со специального знака ( . ; ! $ ) - она выполняется так же как в windbg:
>>>.echo 'hello windbg'
'hello windbg'

>>>? 2+2
Evaluate expression: 4 = 00000000`00000004

>>>

Если команда не содержит такого знака, его можно придумать:
>>>lm
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'lm' is not defined

>>>;lm
start             end                 module name
00000000`76fd0000 00000000`770ca000   USER32     (deferred)             
00000000`770d0000 00000000`771ef000   kernel32   (pdb symbols)   

Уловка заключается в том, что в windbg символ ';' используется для разделения команд, но может стоять и вначале сторки.

Зарезервированные команды

Ряд строк зарезерирован под собственные команды отладчка, в основном они совпадают с командами управления отладкой в windbg: g, t, p. Но их действия будут зависить от контекста и не всегда они будут трансироваться в windbg команды

Макрокоманды

Расширить функциональность отладчка можно с помощью макрокоманд. Макрокоманды начинаются со знака %. Karmadbg имеет следующие встроенные макрокоманды:
  • %help - выводит справку в консоль
  • %run ("имя_файла") - выполняет произвольный скрипт ( применый аналог команды !py для pykd )
  • %rund ("имя_файла") - выполняет произвольный скрипт c отладчиком python

Метаотладчик

Это уникальная особенность данного продукта.
Karmadbg позволяет управлять отладкой, karmadbg позволяет автоматизировать отладку с помощью python cкриптов, karmadbg позволяет отлаживать python скрипты для автоматизации отладки. Вот такой полный цикл автоматизации отладки.
karmadbg1.png

Изменяй меня!!!!

  • Гибкая конфигурация через xml файл
Вы можете поменять структуру меню, шорткаты, название окон, добавить свои элементы или убрать не нужные
  • Цветовые схемы
Весь внешний вид задается через файлы QSS формата ( очень похож на CSS ).
  • Новые команды
Создавайте новые макрокоманды с удобным на ваш взгляд синтаксисом
  • Новые модули
Напишите свой модуль для визуализации данных за 5 минут!

Last edited Nov 18, 2014 at 7:20 AM by kernelnet, version 13