2010-02-11 3 views
4

Я написал общую библиотеку, которая частично используется приложением Windows, написанным в Visual Studio 6 (чистый C).Как получить отладочные символы в DLL или извлечь их в файл dbg с помощью Mingw?

Библиотека работает безупречно под Linux, но под Windows что-то сломалось где-то (в ней используется #ifdef WIN32, который может вложить что-то ошибочное).

Но добавление библиотеки DLL в качестве «дополнительных DLL» к проекту в VS6 и запуск приложения в режиме отладки, говорит, что файлы DLL не содержат отладочной информации.

Библиотека построена на gcc без оптимизации (-O0) и с символами отладки (-g).

i586-mingw32msvc-nm -a file.dll показывает символы, а при удалении DLL его размер сокращается до половины и i586-mingw32msvc-nm -a file.dll больше ничего не будет показывать.

Но Visual Studio 6 все еще жалуется на отсутствие информации об отладке. И используя инструмент «Dependeny Walker», он говорит «Debug = No» в библиотеке.

Для решения проблем при работе под Windows информация об отладке имеет решающее значение. Но как можно включить их в DLL (в совместимом с VS6 образом) или извлечь их в файл dbg/pdb?

+0

Похожие: https://stackoverflow.com/questions/19269350/how-to-generate-pdb-files-while-building-library-using-mingw –

ответ

0

Проблема в том, что GCC на самом деле не знает о PDB. В идеале, если вы можете попытаться создать DLL с помощью VC6 (ну, в идеале я бы этого не сделал, я бы использовал лучший компилятор в Windows, поскольку VC6 устарел). Другим вариантом может быть создание всего приложения с использованием MingW, а затем использование gdb с соответствующим интерфейсом на нем.

Однако, this email might help - Я не пробовал это сам, и, похоже, вы получите очень ограниченную информацию об отладке.

-2

GCC и VC++ не используют тот же формат отладочной информации, что и у вас, насколько это возможно. Использование отладчика никогда не является существенным, но это хорошая идея не зависеть от одного слишком много.

+2

> Использование отладчика никогда важно, однако Вы шутить правильно?! Отладчик * жизненно важный * для разработки! Неудивительно, что даже у микропроцессоров есть возможности отладки. – 2011-02-10 16:15:52

+2

@Master: Не верно. Если вы используете методы разработки, основанные на проверке и отладке, вам никогда не понадобится использовать отладчик. –

0

Вы всегда можете использовать gdb как ваш отладчик вместо windbg. Он будет понимать символы из gcc/g ++/mingw toolchain. Не может полностью интегрироваться в ваш инструментарий, но вы получите символы. Windows-версия gdb доступна в двоичном установщике mingw.