Я пытаюсь перенести довольно большой проект C ++ на использование g ++ 4.0 на Mac OS X. Мой проект компилируется без ошибок, но я не могу заставить GDB работать должным образом. Когда я смотрю на стек, набирая «bt» в командной строке GDB, все отображаемые имена файлов и номера строк неверны.
Например, согласно трассировке стека GDB, моя функция main()
должна быть в stdexcept от Mac OS X SDK, что не имеет никакого смысла.
Что может привести к неправильной работе GDB? Я уже проверил в своем коде операторы #line и #file и убедился, что в коде есть только окончания строк Unix. Я также очистил и перестроил проект. Я также попытался отладить проект Hello World, и у него не было такой же проблемы.
Может ли проблема быть связана с одной из сторонних библиотек, на которые я ссылаюсь, и способом их компиляции? Или это что-то совершенно другое?
Вот два примерных вызова gcc
и ld
, выполненных Xcode . AFAIK все cpp-файлы в моем проекте скомпилированы и связаны с одинаковыми параметрами.
/ Разработчик / usr / bin / gcc-4.0 -x c ++
-arch i386 -fmessage-length = 0 -pipe -Wno-trigraphs -fpascal-strings -fasm-blocks -O0 -fpermissive -Wreturn-type -Wunused-variable -DNO_BASS_SOUND -D_DEBUG -DXCODE -D__WXMAC__ -isysroot / Developer / SDK MacOSX10.5.sdk
-mfix-and-continue -fvisibility-inlines-hidden -mmacosx-version-min = 10.4 -gdwarf-2 -D_FILE_OFFSET_BITS = 64 -D_LARGE_FILES -D__WXDEBUG__ -D__WXMAC__ -c "/ Пользователи / adriangrigore / Documents / Gemswe
Mac / TSDLGameBase.cpp "-o
«/ Users / adriangrigore / Документы / Gemsweeper
Mac / сборки / Gemsweeper
Mac.build/Debug/Gemsweeper
Mac.build/Objects-normal/i386/TSDLGameBase.o"
/ Разработчик / usr / bin / g ++ - 4.0 -arch i386
-isysroot /Developer/SDKs/MacOSX10.5.sdk
«-L / Пользователи / adriangrigore / Документы / Gemsweeper
Mac / сборки / отладки»
-L / Разработчик / SDKs / MacOSX10.5.sdk / USR / местные / Библиотека
-L / opt / local / lib "-F / Пользователи / adriangrigore / Документы / Gemsweeper
Mac / сборки / отладки»
-F / Пользователи / adriangrigore / Library / Frameworks
-F / Разработчик / SDKs / MacOSX10.5.sdk / Library / Frameworks
-файллист "/ Пользователи / adriangrigore / Документы / Gemsweeper
Mac / сборки / Gemsweeper
Mac.build/Debug/Gemsweeper
Mac.build/Objects-normal/i386/Gemsweeper
Mac.LinkFileList»
-mmacosx-version-min = 10,4 /opt/local/lib/libboost_program_options-mt.a
/opt/local/lib/libboost_filesystem-mt.a
/opt/local/lib/libboost_serialization-mt.a
/opt/local/lib/libboost_system-mt.a
/opt/local/lib/libboost_thread-mt.a
«/ Users / adriangrigore / Документы / Gemsweeper
Mac / третий
партия / FreeImage / Dist / libfreeimage.a»
«/ Users / adriangrigore / Документы / Gemsweeper
Mac / третий
партия / CPUInfo-1,0 / libcpuinfo.a»
-L / usr / local / lib -framework IOKit -framework Углерод -рамник Какао -рамка -рамка QuickTime -рамка OpenGL -фреймворк AGL -lwx_macd_richtext-2.8 -lwx_macd_aui-2.8 -lwx-2.x-x_x_x8 lwx_macd_adv-2.8 -lwx_macd_core-2.8 -lwx_base_carbond_xml-2.8 -lwx_base_carbond_net-2.8 -lwx_base_carbond-2.8 -framework SDL -рамка Cocoa -o "/ Пользователи / рекламные объявления
Mac / сборки / Debug / Gemsweeper
Mac.app/Contents/MacOS/Gemsweeper Mac "
Обратите внимание, что я уже задавал похожий вопрос относительно отладчика Xcode здесь , но я делаю репост, поскольку только что узнал, что это на самом деле не ошибка Xcode, а проблема с GCC / ld / GDB.
Редактировать: В моем проекте используются следующие сторонние библиотеки: SDL , Boost , wxWidgets . Я не уверен, имеет ли это значение для этой проблемы, но я просто хотел упомянуть об этом на всякий случай.
Я пытался скомпилировать шаблон проекта Xcode SDL и не столкнулся с той же проблемой, поэтому это должно быть связано с чем-то особенным в моем проекте.
Второе редактирование : Как я только что узнал, я сделал ошибку при поиске файлов со строкой «Это автоматически сгенерировано». Я только что нашел несколько десятков файлов с одинаковой строкой, все принадлежащие FreeImage , одной из сторонних библиотек, которые я использую. Итак, проблема, похоже, связана с FreeImage, но я до сих пор не уверен, что делать дальше.