Как отладить DYLIB в XCode? - PullRequest
4 голосов
/ 17 января 2011

Я опытный разработчик Visual Studio, недавно принявший проект OSX 10.6 (проект сервера C ++ без пользовательского интерфейса).

Я успешно отлаживал приложение с помощью отладчика XCode (установка точек останова и т. Д.) В течение нескольких месяцев, включая отладку исходного кода для различных статических библиотек, которые связаны с конечной исполняемой программой.

Однако сегодня вечером мне потребовалось отладить (с точками останова) DYLIB, который также построен из нашего исходного кода, но который динамически связан во время выполнения с приложением (имя DYLIB читается из файла .ini основное применение).

К сожалению, обычный метод, который я использую для отладки приложения (щелчок правой кнопкой мыши по пользовательскому исполняемому файлу и выбор «Отладка с точками останова»), хотя он успешно запускает отладчик и позволяет мне отлаживать приложение (вместе со статически связанным библиотеки), демонстрирует следующее нежелательное поведение, когда я пытаюсь достичь точки останова в исходном коде для DYLIB:

-> Отладчик XCode сообщает, что точка останова была достигнута в том смысле, что я вижу функцию и номер строки в строке состояния в нижней части окон XCode (вместе с указанием, что это сообщение GDB), и приложение останавливает выполнение. Однако нет трассировки стека, нет переменных, ничего - только полностью пустое окно отладчика. Кнопки «перешагнуть», «шагнуть» и т. Д. Отключены. В отладчике не появляется окно редактора (и, следовательно, нет визуальной индикации того, что отладчик остановился в указанной строке). Открытие файла вручную не приводит к отладчику, попавшему в строку.

К сожалению, это бесполезно для меня, поскольку мои попытки отладки DYLIB.

Я охотился повсюду, исследуя и пытаясь найти способ отладчику XCode успешно осмысливать точки останова в исходном коде для этой динамически связанной DYLIB. Я, конечно, сделал ряд чистых / перестроений. Я убедился, что «загрузка символов лениво» снята, а затем очищена / перестроена. Я перезапустил, и я также удалил каталог "build" и перестроил. Я также удалил пользовательские файлы в пакете .xcodeproj. (Также обратите внимание, что я, конечно, собираю и выполняю весь код, включая код DYLIB, в режиме разработки со всеми отключенными оптимизациями и генерирую символы отладки для всех.) Однако мои попытки не увенчались успехом. Также я не могу найти ни одного упоминания об этой проблеме на интернет-форумах.

Буду признателен за любую помощь в указании мне, как использовать XCode для успешной отладки DYLIB, который связан с моим приложением.

Спасибо, Dan.

1 Ответ

3 голосов
/ 19 января 2011

Обновление -

Эта проблема решена. Это был мой недостаток опыта с OSX, который заставил меня не видеть это. Несмотря на то, что мой проект DYLIB был частью того же проекта XCode, что и исполняющий файл, который его вызывает, и несмотря на то, что DYLIB был построен в том же каталоге, что и исполняемый файл, во время выполнения отлаживаемое приложение не получало доступ к DYLIB из место нахождения. Вместо этого он обращался к нему из (другого) места установки. На данный момент я не отслеживал, где место установки «встраивается» в приложение, а копирует конечный исполняемый файл / DYLIB в ожидаемое место установки и создает новый пользовательский исполняемый файл, который указывает на исполняемый файл в этом месте, отлаживая как DYLIB, так и исполняемых работ.

Спасибо, Dan.

...