2009-11-06 2 views
1

Я построил версию OpenSSL без DLL в окне окна. В соответствии с инструкциями я модифицировал скрипт сборки, чтобы включить символы отладки. Я могу противопоставить им штраф, и они бегут. Но когда я пытаюсь войти в функцию openssl из моего кода cpp, он просто перешагивает. Я знаю, что это полный вопрос о нобе, но как я могу это исправить? У меня есть все исходники и заголовки, но я думаю, что должен быть волшебный вызов, который мне не хватает, чтобы сообщить Visual Studio, где они. Или что-то.Как прорисовываться во внешней скомпилированной библиотеке в Visual C++

Спасибо! Mac-guy-страдание-in-windows-land

+0

Спасибо всем за помощь. Оказывается, мне нужно было отредактировать make-файл openssl, чтобы использовать параметр компилятора/Z7. Это заставляет информацию о символе обрабатываться в файлах obj, чтобы они все еще были доступны компоновщику, когда он связывается в библиотеке. – Mike

ответ

0

Когда вы построили OpenSSL, где вы указали, файл символов должен идти? Является ли он в том же каталоге, что и ваш исполняемый файл?

+0

Нет. Так что я должен переместить его, или я могу указать на него VC, или мне нужно перестроить lib и вывести все, где VC будет ожидать его найти? Спасибо за быстрый ответ, BTW. Понял, что это должно было быть чем-то немым с моей стороны. – Mike

+0

Файл с символом (pdb) не должен находиться в одном каталоге: его путь жестко закодирован в executabe/dll. – stijn

+0

У меня есть .lib (фактически 2). Я смотрю файл в шестнадцатеричном редакторе, и я не вижу имя файла pdb - должно ли оно быть видимым? Спасибо еще раз за помощь! – Mike

0

Файлы символов (pdb) существуют только для модулей (exe и dll), а не для объектных файлов. Библиотека - это всего лишь коллекция файлов .obj.

Если источник был скомпилирован с информацией об отладке, то он встроен в файлы .obj, которые компоновщик вытащит в окончательный pdb. Все, что вам нужно, это pdb для вашего exe, чтобы иметь возможность видеть символы для кода OpenSSL.

Вам нужно будет установить путь источника в отладчике, чтобы включить каталог OpenSSL, чтобы иметь возможность выровнять эти символы с помощью источника.

Если вы используете Visual Studio, убедитесь, что опция «Отладка только моего кода» (или что-то в этом роде): отключен в настройках отладчика ... хотя я не думаю, что это влияет на код, скомпилированный в ваш exe , Скорее всего, отладчик просто не знает, куда должен вмешаться источник.

1

Вы можете использовать use dumpbin with the /pdbpath файл символов для двоичного кода; если он не может найти символы, вам нужно переместить их туда, где они могут их найти.

Путь PDB обычно жестко закодирован в двоичный файл, поэтому вы не можете перемещать PDB после того, как вы создали исполняемый файл. Вы можете использовать use the (undocumented) /pdbpath:none linker option, чтобы иметь двоичный файл с относительным путем к его PDB-файлу; то вы можете поместить PDB рядом с двоичным файлом, и отладчик должен его найти.

Обратите внимание, что файлы PDB генерируются только в том случае, если двоичный код равен linked with the /DEBUG option.

Смежные вопросы