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

Discussion in 'WASM.BEGINNERS' started by lust, Apr 26, 2008.

  1. k3internal

    k3internal New Member

    Blog Posts:
    0
    Joined:
    Jan 11, 2007
    Messages:
    607
    lust
    читай маны каторые у айсу идут. там фсё написана
     
  2. valterg

    valterg Active Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2004
    Messages:
    2,105
    S_Alex
    Работает. Если сделать "Allways on top" для Source - то очень неплохо.
    С именами вроде все нормально.
     
  3. S_Alex

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    valterg
    - это правильно.

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

    valterg Active Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2004
    Messages:
    2,105
    Osen
    Ключ /Zd делает это.

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

    Osen Рие

    Blog Posts:
    0
    Joined:
    Apr 5, 2008
    Messages:
    283
    Location:
    Париж
    Да, делает, но насколько я понимаю не /Zd, а /Zi (PDB) или /Z7 (внутри EXE). /Zd как раз исключает указание на путь к исходнику.
     
  6. valterg

    valterg Active Member

    Blog Posts:
    0
    Joined:
    Aug 19, 2004
    Messages:
    2,105
    Osen
    /Zd ключ компилятора - /Zd Add line number debug info
    Т.е. адреса, где начало кода для данной строки.
    Полного пути в PDB к асм-исходнику нет, но имя есть.
    Линкер просто включает отладочную инфу в экзешник.
    Даже ключ /DEBUG можно не задавать - ссылка на PDB создается все равно.
     
  7. Osen

    Osen Рие

    Blog Posts:
    0
    Joined:
    Apr 5, 2008
    Messages:
    283
    Location:
    Париж
    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

    Blog Posts:
    0
    Joined:
    Jul 15, 2003
    Messages:
    1,217
    Location:
    Ukraine
    Osen
    В пакете DbgTools есть утилита symstore, которая предназначена для создания хранилищ отладочной инфы с различной степенью детализации. Она делает стрип существующих pdb.
     
  9. Osen

    Osen Рие

    Blog Posts:
    0
    Joined:
    Apr 5, 2008
    Messages:
    283
    Location:
    Париж
    green
    Спасибо, очень полезная информация!
     
  10. valterg

    valterg Active Member

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

    lust New Member

    Blog Posts:
    0
    Joined:
    Oct 14, 2007
    Messages:
    72
    Именно так и надо было.
    Всем огромное спасибо! Очено много ценной и нужной инфы.
    Что я сейчас имею
    скрипт для билда :
    Code (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>(выбрать свой файл), то исходник подгружается, и всё, вроде, работает так как хотелось.

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