MTDBG - отладчик пользовательского уровня

...
  • На предыдущей странице от твоего поста я разместил архив с ODT и PDF файлом документации. Даже искать ничего не нужно - открываешь документацию и первыми же словами по сути получаешь ответ на заданные вопросы:
    Общее описание
    В каждый момент времени mtdbg может отлаживать только одну программу.
    Назовём такую программу загруженной для отладки. Если никакая программа не
    загружена, абсолютное большинство действий по отладке недоступно.
    А чуть погодя:
    Точки останова
    Обычно требуется, чтобы программа нормально выполнялась, но при
    наступлении определённых условий программа приостанавалась и управление получал
    отладчик. Соответствующие условия называются точками останова, breakpoint(s), в
    просторечии - бряками. Простейший тип точек останова - на конкретный адрес, т.е.
    прерывать выполнение при eip=<заданное значение>. Такие точки останова
    устанавливаются командой:
    но обыкновенная лень заставляет бросаться словами:
    VaStaNi wrote:А что на форуме либо ответов никто не знает или западло сказать да-нет, либо никто ее не читал и следовательно не пользовался...
    З.Ы. Когда я на работе задаю слишком простые вопросы мне всегда отвечают "Читай принципы операций". Почему то я не считаю, что им "западло" ответить. Отвечать на вопросы человека, если он не желает прочитать документацию - ну, можешь тогда называть это "западло" - я не возражаю.
  • В процессе активного использования отладчика (для работы над dream) я понял чего мне не хватает в нем.
    Пытаюсь разобраться с отладчиком. Поставил перед собой следующие задачи:
    • (WIP) повторение предыдущей команды отладчика по нажатию Enter (если пустая командная строка)
    • (50% DONE) поддержка числового аргумента в операциях step и proceed
    • история команд и навигация по ней
    • поддержка скриптования и загрузки скрипта из файла
    • сохранение области памяти в файл
    Начал с простого, написал маленький патч. Step работает как задумано, на все 100%. Но не proceed и повторение
    Прикрепляю новый файл и файл патча

    однако не работает ни повторение предыдущей команды, и proceed заходит внутри функция. В чем мои ошибки?
    Attachments
    mtdbg.patch.gz (1.74 KiB)
    Downloaded 276 times
    mtdbg.asm (102.2 KiB)
    Downloaded 280 times
  • Насчет высказанных идей.
    1) Не очень правильно - можно ведь случайно нажать и угробить все. Лучше повесить на определенную комбинацию или просто клавишу.
    2) Да.
    3) Да.
    4) Не понятно для чего.
    5) Да.
  • первый пункт неверен, и должен быть заменен историей команд
    И мы уже давно не пешки,
    Мы пули, мы орлы, и решки!
    Война ютит бинарный код,
    Умри, или иди вперед!
  • В gdb сделано повторение предыдущей команды по нажатию Enter. Но вот отдельная клафиша для этого - стоящий вариант
  • Прилагаю новую промежуточную версию (пока не готова для коммита в svn) mtdbg.
    Я разбил эту простыню на несколько файлов, и выделил GUI в gui.inc
    Также старался комментировать непонятные места (вдруг кому-то еще захочется модифицировать)
    Вынес движок дизассемблера в отдельный файл (планирую потом над ним поработать отдельно)
    Провел небольшой рефакторинг. Перевел на использование макроса mcall, там где это возможно.
    Начал имплементить поддержку FPU/MMX/SSE - пока только "заготовка"
    Ну и конечно, новые нескучные обоиподдержка задания цветовой схемы при компиляции.
    Надо лишь поменять константы COLOR* в файле gui.inc
    В приложенном файле для примера использована инверсная тема. Основной останется какая была.
    Добавлен файл README, в котором указаны возможные направления развития (над которыми уже работаю, или только планирую).

    P.S. Может переименовать в KDBG? (после того, как доделаю то, что планирую, и отправлю коммит)
    Attachments
    mtdbg.tar.gz (31.96 KiB)
    mtdbg
    Downloaded 455 times
  • Я за переименование.
    Из хаоса в космос
  • А можно добавить возможность просматривать память процесса и подтягивать исходный код ЯВУ по map-файлам, к примеру, gcc? (Хотя, чего уж там, второе - совсем не нужно).
  • Мне вот только интересно, почему она так страшно подмигивает мне? Особенно это заметно, если загрузить какую-нибудь программу, и выполнить много инструкций за раз, например "s 50"
    Для яву примочки делать не буду - и так недоделанного куча, а это сложная задача.

    И еще вопрос. Требуется разделить вывод дизассемблера. На данный момент дизассемблер вывод всю инструкцию одной строкой. Какую конкретную структуру данных посоветуете использовать, для сохранения вывода дизассемблера? Отдельно префикс, интрукция, операнды. Что бы это побыстрее работало. По сколько байт выделять на каждое поле?
  • Хотите переименовать - тогда уж хотя бы в KosDBG, а то и так в глазах рябит от KGDB, будут ещё очепятываться постоянно.
  • Отладчик KGB...
  • я вот постеснялся это писать, хотя и хотел.
  • KDB?
    Из хаоса в космос
  • XVilka
    Ты хочешь хранить в строковом формате или перекодировать в свой двоичный формат ?
  • Who is online

    Users browsing this forum: No registered users and 8 guests