S_Alex Работает. Если сделать "Allways on top" для Source - то очень неплохо. С именами вроде все нормально.
Да, делает, но насколько я понимаю не /Zd, а /Zi (PDB) или /Z7 (внутри EXE). /Zd как раз исключает указание на путь к исходнику.
Osen /Zd ключ компилятора - /Zd Add line number debug info Т.е. адреса, где начало кода для данной строки. Полного пути в PDB к асм-исходнику нет, но имя есть. Линкер просто включает отладочную инфу в экзешник. Даже ключ /DEBUG можно не задавать - ссылка на PDB создается все равно.
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.
Osen В пакете DbgTools есть утилита symstore, которая предназначена для создания хранилищ отладочной инфы с различной степенью детализации. Она делает стрип существующих pdb.
Osen Ну все понятно. Это просто устаревший ключ. В ml.exe версии 7.10 он есть, в Студии 2003 в Си есть, а вот в 2005 - уже нет. Кстати, ситаксис дурацкий, т.к. в Юниксе и еще где-то я привык , что Zi - это инфа о строках(правда и локальные символы включались). Возможно надо с /Z7 - колдовать, т.к. это "старый синтаксис".
Именно так и надо было. Всем огромное спасибо! Очено много ценной и нужной инфы. Что я сейчас имею скрипт для билда : Код (Text): C:\masm32\bin\ml /c /coff /Cp /Zi /Zd /Zf "socket.asm" C:\masm32\bin\Link /SUBSYSTEM:WINDOWS /VERSION:4.0 /DEBUG "socket.obj" В Ollydbg если сразу открыть view > source, то пустое окно, если view > source files>(выбрать свой файл), то исходник подгружается, и всё, вроде, работает так как хотелось. Ещё раз огромное спасибо за хелп!