Я портирую C ++ SDK с Windows на Mac OSX 10.5. У меня есть проблема в XCode, где мои точки останова в определенных файлах будут достигнуты, только если я установлю их во время отладки. Если я остановлю отладку, а затем перезапущу, точки останова больше не будут попадать. Если я добавлю их, пока не отлаживаю, они не получат удар. Это только в определенных файлах, и мои контрольные точки всегда темно-синие. то есть я не могу определить разницу между точкой останова, которая получит удар, и точкой останова, которая не будет.
В частности, мой SDK состоит из различных динамических библиотек. Они созданы с использованием Perforce jam, который вызывает различные исполняемые файлы компиляции и компоновки в зависимости от моей ОС и версии компилятора (например, cl.exe и link.exe в Visual Studio). У меня есть простое (модульное тестирование) приложение командной строки, которое связывается с этими динамическими библиотеками и вызывает код в них. Это приложение для Windows представляет собой проект Visual Studio, в котором я устанавливаю точки останова в коде библиотеки и ожидаю, что они будут достигнуты.
Я создал то же самое служебное приложение командной строки C ++ в Xcode 3.1.2, которое ссылается на dylibs sdk и вызывает в них код. Некоторые из точек останова работают нормально. Я могу установить точки останова в коде, который вызывается из проблемного кода, и перейти к проблемному коду, который я затем смогу пройти нормально. Проблемный код скомпилирован в тот же самый dylib, что и код, который работает нормально. Это также долго и достаточно сложно, чтобы не быть кандидатом на встраивание.
Я пробовал следующее:
- Выключить символы загрузки лениво.
- Компилировать как с gcc 4.0, так и с gcc 4.2.
- Выполнить полную очистку и отключение.
- Удалить пользовательские файлы пакета xcodeproj.
- Переименуйте файлы, чтобы они не конфликтовали с системными файлами.
- Очистить все из окна точек останова.
- Создайте новый проект Xcode.
Мое приложение скомпилировано в режиме отладки в формате DWARF, а мои библиотеки собраны с флагом -g (вместе с -v, -arch i386 и -fvisibility-inlines-hidden).
Помощь будет высоко ценится. Спасибо.
Обновление : извините, что не обновил это, мой проект порта Mac был отложен. Я никогда не решал это, но обнаружил, что это на самом деле происходит только в телах конструктора. Я вернусь к этому, как и когда я снова столкнусь с проблемой.