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

...
  • Mario wrote:Также, если кому интересно - список меток с адресами можно получить использовав утилиты идущие в комплекте с FASM.
    Например для линуксовой версии это выглядит приблизительно так:

    Code: Select all

    #!/bin/bash
    #
    	echo "lang fix ru"
    	echo "lang fix ru" > lang.inc
    	fasm -m 16384 animage.asm animage -s animage.fas
    	listing -b 4 animage.fas animage.dbg
    	symbols animage.fas animage.sbl
    	rm -f lang.inc
    	exit 0
    
    Однако даже самый очищенный файл, полученный из утилиты symbols, содержит мусор. И к тому же порядок следования названий меток и адресов наоборот от требуемого для отладчика.

    У меня есть планы прикрутить OpenDialog к отладчику для выбора отлаживаемого файла. Существующий синтаксис при этом не поменяется. Добавится только одна опция указывающая брать путь из области полученной от OpenDialog. По пути возможно доработаю утилиту symbols до необходимого отладчику формата *.dbg
    Чтобы не потерялось - копирую из чата инструкцию от CleverMouse для генерирования *.dbg-файла (для MTDBG) из FASM под Linux:
    CleverMouse « Fri Nov 21, 2014 5:16 pm » listing - утилита из комплекта fasm, если она даже не запускается, пусть сами разбираются, в чём дело
    CleverMouse « Fri Nov 21, 2014 5:17 pm » yogev_ezra: я не удивлюсь, если они собрали tools/dos/listing.asm и удивляются, почему не работает
    CleverMouse « Fri Nov 21, 2014 5:18 pm » я также не удивлюсь, если они скомпилировали tools/libc/listing.asm, но не слинковали
    yogev_ezra « Fri Nov 21, 2014 5:18 pm » CleverMouse: А есть более простой способ получения .dbg для MTDBG под Linux?
    CleverMouse « Fri Nov 21, 2014 5:21 pm » yogev_ezra: symbols kernel.fas kernel.lst && perl -ne 'print "$2\t$1\n" if m/([^:]*): (0x[^,]{16}),/ && $1 ne "@@"'
    CleverMouse « Fri Nov 21, 2014 5:21 pm » listing - оно вообще не про то
    yogev_ezra « Fri Nov 21, 2014 5:22 pm » CleverMouse: А symbols - тоже утилита из комплекта fasm, или встроенная в shell?
    CleverMouse « Fri Nov 21, 2014 5:23 pm » yogev_ezra: утилита из комплекта fasm
    yogev_ezra « Fri Nov 21, 2014 5:25 pm » CleverMouse: И kernel.lst можно будет скормить MTDBG, и будет достаточно?
    CleverMouse « Fri Nov 21, 2014 5:26 pm » symbols kernel.fas kernel.lst && perl -ne 'print "$2\t$1\n" if m/([^:]*): (0x[^,]{16}),/ && $1 ne "@@"' kernel.lst > kernel.dbg
    CleverMouse « Fri Nov 21, 2014 5:26 pm » kernel.lst в другом формате, однострочник на perl выбрасывает мусор и переводит формат
  • Багрепорт.
    SLenik wrote:Увидел в MTDBG ошибку - неверно дизассемблировалась инструкция ЯМК: 66 83 C3 80. В переводе на асм это значит "add bx, -128" или "add bx, 0FF80h". Но отладчик показывает эту инструкцию как "add bx, 0FFFFFF80h" что очевидно неверно (в микропроцессоре Intel размеры операндов у команды сложения должны быть одинаковы).
    Из хаоса в космос
  • I hacked the 'symbols' tool that comes distributed with fasm, to generate .dbg file from .fas files.
    Replace symbols.inc that comes with fasm (in 'tools' directory) with my version (http://ftp.kolibrios.org/users/hidnplayr/SYMBOLS.INC) and you can assemble a converter for windows/dos/linux!
    "Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius -- and a lot of courage -- to move in the opposite direction." Albert Einstein
  • я также не удивлюсь, если они скомпилировали tools/libc/listing.asm, но не слинковали
    И правильно, так оно и было, спасибо %)
    I hacked the 'symbols' tool that comes distributed with fasm, to generate .dbg file from .fas files.
    Thanks a lot.
  • При пошаговой отладке, примерно через каждые 10 шагов, происходит исключение 0D (General protection fault). При этом нельзя сделать следующий шаг. Однако можно ввести команду g <адрес_следующей_строки> и шагать дальше.
  • MTDBG хорошая вещь, но очень надоедает пошаговое выполнение. Желательно бы добавить отслеживание системных и библиотечных вызовов.
  • Как оказалось, ещё за год до моего сообщения (скриншот под вторым спойлером) viewtopic.php?f=2&t=3297&p=66501#p66501 было известно
    sam0delk1n wrote:При пошаговой отладке, примерно через каждые 10 шагов, происходит исключение 0D (General protection fault).
    Но похоже, что воз и ныне там :(
  • не сталкивался
  • Я когда-то что-то запускал под отладчиком - такого не было.
  • Оказалось, что наш дебаггер не понимает имена файлов, содержащие пробелы.

    Пробовал через командную строку, также с помощью команды дебаггера load, и пробовал писать путь в кавычках.
    В результате пишет: "Cannot load program. File not found."
    Сам загружаемый файл существует.
    Spoiler:
    1.png
    1.png (26.58 KiB)
    Viewed 10377 times
  • Проверил http://board.kolibrios.org/viewtopic.ph ... 157#p68065 на реальном железе — проблем не было, наверное, это глюк VirtualBox.
  • Обнаружил ошибку в MTDBG, при загрузке системы с расширением 800*600 окно MTDBG с большим шрифтом не влазит в экран.
    Но это еще пол беды, проблема в том что отладчик входит в вечный мигательный цикл и с ним ничего уже сделать нельзя.
    При больших экранах все работает как надо.
  • BTW: SSE and maybye AVX support will be IMHO very useful. I think it's not only my opinion.
  • SVN rev. 8591:
    • исправлен баг с отображением меток, загруженных из отладочного файла; вот так он выглядел:
      Spoiler:
      mtdbg_label_bug.png
      mtdbg_label_bug.png (9.76 KiB)
      Viewed 6921 times
    • история команд (прокручивается с помощью стрелок вверх/вниз)
    • слегка освежил документацию к программе
  • Who is online

    Users browsing this forum: No registered users and 1 guest