Генерация PDB файлов (FASM)

Тема в разделе "WASM.WIN32", создана пользователем S_T_A_S_, 22 авг 2004.

  1. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Привет всем.



    Первая удачная (?) попытка создать PDB файл для исходника компилируемого FASM.



    Для начала необходимо подготовиться:



    1. Скачать FASM with listing отсюда



    2. Отредактировать файл\fasm\SOURCE\FORMATS.INC:<font face="monospace]
    Код (Text):
    1. db 4,'data',19h,6
    2. db 5,'debug',1Ah,6   ; <- добавить
    3. db 11,'discardable',19h,25
    </font><!--face-->3. Откомпилировать fasm\SOURCE\LISTING\WIN32\FASM.ASM.

    Теперь FASM может создавать секцию 'DEBUG'.



    4. Для компиляции оспользовать скрипт <font face="monospace]fasmd.js</font><!--face--> (см .аттач).

    Аргументы как у FASM - 1й имя исходника, 2й (опциональный) - результирующий файл. (по умолчанию - exe)



    5. Теперь можно в OllyDebug сделать так: View -> Source files и открыть *.LST file.



    Так же полученные файлы работают (не всегда :) c AMD CodeAnalyst.

    Может ещё где поможет.





    Основная проблема на данный момент - отсутствие информации по новому формату Program DataBase - MSF 7.00.

    Старый (PDB 2) слегка описан у Шрайбера, по новому немного инфы нашел здесь



    Пока всё это находится в экспериментальной стадии, так что всё реальзовано скриптом, позже надеюсь интегрировать в FASM.

    Ещё есть проблемы и с самим FASM'ом - не всегда есть возможность сгенерировать listing, так что ещё много чего нужно будет сделать.

    Но надеюсь уже сейчас это будет полезно.



    [​IMG] _440747787__pdb.zip
     
  2. sensy

    sensy New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    29
    S_T_A_S_

    У меня частенько в простых на первый взгляд программах FASM теряет контроль и генерит листинги по 100-200 Мб, состоящие из нулей.



    Также зацикливание происходит в таком коде:
    Код (Text):
    1.  
    2. macro m1 a,b
    3.  {
    4.    if ~defined b
    5.     if a > 0
    6.      b = 1
    7.     else
    8.      b = 0
    9.     end if
    10.    end if
    11.  }
    12.  
    13. ; DEBUG_FUNCTIONS = 1
    14. DEBUG = 0
    15. m1 DEBUG,DEBUG_FUNCTIONS
    16.  
     
  3. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Это ещё сложная программа :)

    Вот проще:
    Код (Text):
    1. format pe
    2.  
    3. if 0
    4. nop
    5. end if


    В общем-то, проблема известная.

    listing.inc достаточно сырой, буду копать его, всё равно мне скрипт не кажется дзенным решением :) Это просто макет для обкатки.
     
  4. Alexey2005

    Alexey2005 New Member

    Публикаций:
    0
    Регистрация:
    9 янв 2006
    Сообщения:
    19
    Адрес:
    Russia
    Ссылка не работает. Если кто знает - скажите, пожалуйста, где можно достать FASM with listing?
     
  5. dead_body

    dead_body wasm.ru

    Публикаций:
    0
    Регистрация:
    3 сен 2004
    Сообщения:
    603
    Адрес:
    Украина;г.Харьков;г.Н.Каховка
    в версии 1.68 обещают уже отладочную инфу, надо ждать.
     
  6. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    dead_body
    в какой форме?
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Alexey2005
    На форуме фасма. Правда, встроить придётся самому.

    dead_body
    Какой формат? Я не слышал об этом, знаю лишь о возможности дампа символов, на основе которого вкупе с листингом можно генерить в принципе любую отладочную инфу.