Посовeтуйте отладчик

Тема в разделе "WASM.BEGINNERS", создана пользователем lust, 26 апр 2008.

  1. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    lust
    читай маны каторые у айсу идут. там фсё написана
     
  2. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    S_Alex
    Работает. Если сделать "Allways on top" для Source - то очень неплохо.
    С именами вроде все нормально.
     
  3. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    valterg
    - это правильно.

    "У каждого своя голова за плечами должна быть"
     
  4. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Osen
    Ключ /Zd делает это.

    Теперь ждем ответа от lust
     
  5. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Да, делает, но насколько я понимаю не /Zd, а /Zi (PDB) или /Z7 (внутри EXE). /Zd как раз исключает указание на путь к исходнику.
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Osen
    /Zd ключ компилятора - /Zd Add line number debug info
    Т.е. адреса, где начало кода для данной строки.
    Полного пути в PDB к асм-исходнику нет, но имя есть.
    Линкер просто включает отладочную инфу в экзешник.
    Даже ключ /DEBUG можно не задавать - ссылка на PDB создается все равно.
     
  7. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    valterg
    Проверим на практике, т.к. сама документация лично мне по поводу /Zd не понятна. В документации по Visual C++ Compiler ключ /Zd вообще отстутствует.

    Итак, я юзаю Visual Studio 2005, в ней С++ компилятор.

    1) Ключ /Zi - отладочная инфа для объектного файла попадает в PDB-файл на стадии компиляции. В OBJ-файле есть ссылка на PDB-файл. Таким образом создается файл VCxx.pdb на который ссылается мой main.obj. При линковке такого OBJ с /DEBUG ключом в EXE-файл добавляется ссылка на PDB-файл и именно линкер генерит PDB-файл на основе OBJ-файла. При линковке без /DEBUG ключа в EXE-файл отладочная инфа не добавляется.

    2) Ключ /Z7 - создается только obj в котором есть отладочная инфа. При линковке такого OBJ с /DEBUG ключом в EXE-файл добавляется ссылка на PDB-файл и именно линкер генерит PDB-файл на основе OBJ-файла. При линковке без /DEBUG ключа в EXE-файл отладочная инфа не добавляется

    3) Ключ /Zd - игнорируется как без /Zx так и с ними

    4) Ключ /ZI не рассматриваю из-за очевидности.

    В итоге ключ о ключе /Zd можно забыть. Хотя с другой стороны в некоторых других описаниях ключей компилятора он присутствует и в описании в нем не понятные слова:

    Produces an .obj file or executable file containing only global and external symbol and line-number information but no symbolic debugging information. Use this option if you want to reduce the size of the .exe file, or if you do not want to use the debugger's expression evaluator.
    Делает obj или exe файл (как компилятор может делать exe файл?) содержащий только глобальные и внешние символы а также инфу о номерах строк, но без символьной отладочной информации (это просто полный бред - смысл такой - делает отладочную инфу с символами, но без них (может без закрытых???)). Ну дальше не интересно.

    Кстати мой пост по поводу PDB-файлов от Micro$oft неверен по поводу /Zd, но как тогда Micro$oft делает PDB без ссылок на исходный код? Мне удалось сделать это ключом линкера /PDBSTRIPPED.
     
  8. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Osen
    В пакете DbgTools есть утилита symstore, которая предназначена для создания хранилищ отладочной инфы с различной степенью детализации. Она делает стрип существующих pdb.
     
  9. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    green
    Спасибо, очень полезная информация!
     
  10. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Osen
    Ну все понятно. Это просто устаревший ключ. В ml.exe версии 7.10 он есть, в Студии 2003 в Си есть,
    а вот в 2005 - уже нет. Кстати, ситаксис дурацкий, т.к. в Юниксе и еще где-то я привык , что Zi - это инфа о строках(правда и локальные символы включались). Возможно надо с /Z7 - колдовать, т.к. это "старый синтаксис".
     
  11. lust

    lust New Member

    Публикаций:
    0
    Регистрация:
    14 окт 2007
    Сообщения:
    72
    Именно так и надо было.
    Всем огромное спасибо! Очено много ценной и нужной инфы.
    Что я сейчас имею
    скрипт для билда :
    Код (Text):
    1. C:\masm32\bin\ml /c /coff /Cp /Zi /Zd /Zf   "socket.asm"
    2. C:\masm32\bin\Link /SUBSYSTEM:WINDOWS  /VERSION:4.0 /DEBUG "socket.obj"
    В Ollydbg если сразу открыть view > source, то пустое окно, если view > source files>(выбрать свой файл), то исходник подгружается, и всё, вроде, работает так как хотелось.

    Ещё раз огромное спасибо за хелп!