Как узнать, что библиотека - это библиотека отладки или релиз? - PullRequest
2 голосов
/ 24 марта 2011

Я использую библиотеку mysql cpp. Я извлекаю последнюю копию оттуда ствола bzr и использовал cmake для создания библиотеки.

Первый раз я использовал режим выпуска, а второй раз я использовал режим отладки для сборки. Обе библиотеки имеют

a mysql_debug.cpp
U mysql_debug

Есть ли способ проверить в программе (код C или C ++) или с помощью nm, что библиотека является библиотекой Release или Debug

Ответы [ 3 ]

1 голос
/ 24 марта 2011

Я видел ложные негативы с нм, поэтому я не доверяю этому.Когда я хочу проверить, есть ли у объектного файла отладочная информация, я запускаю objdump -x для объектного файла или библиотеки и смотрю, есть ли заголовки, в которых написано dbg, stabs или dwarf.В любом случае, это не самое элегантное решение, но оно никогда не ошибалось, и действительно легко увидеть разницу в том, что у вас есть отладочная и выпускная сборки для сравнения.

0 голосов
/ 13 июля 2012

Различия между сборками отладки и выпуска обычно связаны с тем, что недопустимый код оптимизируется по-разному, а не несовместимо, поэтому просто удача, что один из них работает, а другой нет (это может быть и наоборот).

Запустите программу под valgrind, чтобы увидеть, помечает ли это какие-либо незаконные доступы.

0 голосов
/ 13 июля 2012

Сделайте objdump -x, сохраните вывод в файле и найдите dll.Если вы видите, что библиотека связана с библиотекой выпуска Windows, то ее версия выпуска в противном случае будет отладочной.

...