Отладчик может загружать файлы с информацией об именах в программе (метки,
глобальные переменные) - текстовые файлы, каждая строка которых имеет вид:
0x<hex_значение_адреса> <имя>
(строки, не имеющие такой вид, игнорируются). Такой файл может быть создан
вручную или сгенерирован автоматически при компиляции исходника FASM'ом.
MTDBG - отладчик пользовательского уровня
-
Mario
Asper
Ты сам лично можешь выложишь здесь методику которая сама без лишних телодвижений формирует требуемый список без мусора?
Я вот не с мог - хотя гуглил, и рыл форум фасма. А что имел ввиду diamond - я не знаю, но мне так кажется, если бы такая методика готовая и без лишних телодвижений была, то он бы расписал ее.
Ты сам лично можешь выложишь здесь методику которая сама без лишних телодвижений формирует требуемый список без мусора?
Я вот не с мог - хотя гуглил, и рыл форум фасма. А что имел ввиду diamond - я не знаю, но мне так кажется, если бы такая методика готовая и без лишних телодвижений была, то он бы расписал ее.
Отладчиком редко пользуюсь и обычно отлаживаю свои программы, где я и без символов знаю каждую строку коду.
А что за мусор?
А что за мусор?
Ну так создай скрипт или батник (в зависимости от используемой системы):
Вот что получаем:
.fas файл так вообще гигантский и имеет бинарные включения.
В качестве animage естественно можно использовать любую другую программу.fasm -m 16384 animage.asm animage -s animage.fas
symbols animage.fas animage.sbl
Вот что получаем:
Code: Select all
START: 0x00000000000022D8, defined in animage.asm[49]
IM_END: 0x000000000000AADD, defined in animage.asm[198]
I_END: 0x000000000001419C, defined in animage.asm[343]
stacktop: 0x000000000001419C, defined in animage.asm[341]
file_path: 0x000000000000EC9C, defined in animage.asm[316]
cur_dir_path: 0x0000000000011D9C, defined in animage.asm[332]
RECT.left: 0x0000000000000000, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[88]}
sizeof.RECT.left: 0x0000000000000004, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[89]}
RECT.top: 0x0000000000000004, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[88]}
sizeof.RECT.top: 0x0000000000000004, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[89]}
RECT.right: 0x0000000000000008, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[88]}
sizeof.RECT.right: 0x0000000000000004, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[89]}
RECT.bottom: 0x000000000000000C, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[88]}
sizeof.RECT.bottom: 0x0000000000000004, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[89]}
sizeof.RECT: 0x0000000000000010, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[470] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[97]}
BOX.left: 0x0000000000000000, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[477] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[88]}
sizeof.BOX.left: 0x0000000000000004, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[477] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[89]}
BOX.top: 0x0000000000000004, defined in {line generated by {line generated by {line generated by {line generated by {line generated by {line generated by ..\..\..\macros.inc[477] from ..\..\..\struct.inc[60]}}} from ..\..\..\struct.inc[80]}} from ..\..\..\struct.inc[88]}
Я так понимаю нужно просто в каждой строке удалять информацию после запятой (включительно) и до конца строки а также двоеточие. Операция вроде несложная можно сделать простую программу, которая будет переводить такие файлы в нужный формат.
Зачем? Куча промежуточных файлов. Если сразу можно сделать нормальное выдергивание из FAS файла.
Вообще обработка символьной информации обычно не вызывает затруднений.
Мы уже ушли в полный оффтоп. Замечу лишь - наличие сразу готового для работы файла намного упрощает жизнь и экономит время.
Asper
Ага, давайте редактировать изображения в hex-редакторе, писать опкодами программы, и забивать микроскопом гвозди Марио прав, хотя лучше всё-таки доработать T_Edit или TinyPad, чтобы можно было нормально работать в KoOS, а не (оужас!) в Винде и в Линуксах.
Ага, давайте редактировать изображения в hex-редакторе, писать опкодами программы, и забивать микроскопом гвозди Марио прав, хотя лучше всё-таки доработать T_Edit или TinyPad, чтобы можно было нормально работать в KoOS, а не (оужас!) в Винде и в Линуксах.
ушёл...
Одно другому не мешает. Генерацию информации dbg можно сделать как под Колибри, так и под Линукс и Виндовс.Nasarus wrote:Asper
хотя лучше всё-таки доработать T_Edit или TinyPad, чтобы можно было нормально работать в KoOS, а не (оужас!) в Винде и в Линуксах.
FASM для Колибри поддерживает генерацию .dbg файла.
ушёл...
Хм, а ведь точно.
Заработался я совсем - в самой Колибри давно уже не компилировал. Тогда вопрос снимается - вся функциональность есть в FASM, который в самой Колибри. Сам отладчик тоже дорабатывать не нужно. Буду заниматься другими вещами. А инструкцию по отладчику надо дополнить подробным описанием.
Разве что Тинипад дополнить компиляцией с параметром для отладчика и FASM на прием этого параметра, через параметры запуска оформить (как это сделано например в Jpegview, zSea и KIV).
Заработался я совсем - в самой Колибри давно уже не компилировал. Тогда вопрос снимается - вся функциональность есть в FASM, который в самой Колибри. Сам отладчик тоже дорабатывать не нужно. Буду заниматься другими вещами. А инструкцию по отладчику надо дополнить подробным описанием.
Разве что Тинипад дополнить компиляцией с параметром для отладчика и FASM на прием этого параметра, через параметры запуска оформить (как это сделано например в Jpegview, zSea и KIV).
А я-то думал, что это именно FASM для Колибри выводит несовместимый .dbg файл.
Пару вопросов.
1. поддерживает ли отладчик брэйкпоинты?
2. можно лизить по ядру и отлаживать его тело, например пошагово, дампить массивы ?
1. поддерживает ли отладчик брэйкпоинты?
2. можно лизить по ядру и отлаживать его тело, например пошагово, дампить массивы ?
VaStaNi
Если прочтешь документацию, то найдешь ответы.
Если прочтешь документацию, то найдешь ответы.
Who is online
Users browsing this forum: No registered users and 5 guests