Отсутствующий символ называет при профилировании Приложения для iPhone с Инструментами

Я компилирую Приложение для iPhone через командную строку (так никакие включенные опции XCode), и я не могу заставить свои имена символа показывать при профилировании с Инструментами. Я попробовал несколько флагов, таких как-gdawrf-2 и-g без любого успеха. Я также попытался использовать dsymutils для генерации .dSYM файла, но у меня нет подсказки, как я, как предполагается, использую его так, чтобы неудавшийся также.

Любая справка будет значительно цениться!

58
задан Mac Twist 5 May 2010 в 20:15
поделиться

3 ответа

Как Instruments получает отладочную информацию:

Instruments получает отладочную информацию из файла .dSYM, который обычно автоматически генерируется XCode при установке для параметра Debug Information Format значения DWARF с файлом dSYM в сочетании с флажком в поле параметра Generate Debug Symbols. Установка этих параметров добавит дополнительный шаг к процессу сборки XCode и сгенерирует файл dSYM после компиляции приложения. Каждый dSYM построен с UUID, который соответствует UUID в разделе Mach-O в двоичном файле, из которого он получен. Программа импорта Spotlight индексирует UUID каждого файла dSym, который находится в доступном для Spotlight месте на вашем Mac. Поэтому SPOTLIGHT творит всю черную магию и отвечает за установление связи между запущенным вами .app и соответствующим ему файлом .dSYM.

Как сгенерировать отладочную информацию и файл dSYM без XCode:

Убедитесь, что вы компилируете с флагами –gdwarf-2 и -g. (Могут работать и другие комбинации флагов)

-g Производить отладочную информацию в собственный формат операционной системы (удары, COFF, XCOFF или DWARF 2). GDB может работать с этой отладкой Информация. В большинстве систем, использующих формат stabs, -g разрешает использование дополнительных отладочная информация, которая только GDB можешь использовать; эта дополнительная информация делает отладка лучше работает в GDB, но будет возможно, приведет к сбою других отладчиков или отказываюсь читать программу. если ты хотите точно контролировать, следует ли генерировать дополнительную информацию, использовать -gstabs +, -gstabs, -gxcoff +, -gxcoff или -gvms (см. ниже). GCC позволяет используйте -g с -O.Ярлыки взято оптимизированным кодом может иногда производят удивительные результаты: некоторые переменные, которые вы объявили может вообще не существовать; поток управления можете ненадолго переехать туда, где вы не ожидайте этого; некоторые заявления могут не быть выполняется, потому что они вычисляют постоянные результаты или их значения были уже под рукой; некоторые заявления могут выполнять в разных местах, потому что они были выведены из петель.
Тем не менее оказывается возможным оптимизированный вывод отладки. Это делает это разумно использовать оптимизатор для программы, в которых могут быть ошибки.

-gdwarf-2 Создание отладочной информации в формате DWARF версии 2 (если это поддерживается). Это формат, используемый DBX на IRIX 6. С этот вариант, GCC использует функции DWARF версии 3, когда они пригодятся; версия 3 совместима снизу вверх с версия 2, но все еще может вызывать проблемы для старых отладчиков.

Создайте файл dSYM с помощью dsymutil. Если инструмент не распознается в командной строке, используйте прожектор, чтобы найти его. ВАЖНО: Поместите файл .app на свой Mac HD перед созданием dSYM, если вы работаете с сетевым диском.

dsymutil MyApp.app/MyApp -o MyApp.app.dSYM

Поместите файл .dSYM на локальный диск Mac и запустите инструменты, как обычно.

Индексирование прожектора Resettig:

Если символы не отображаются, это может быть связано с ошибкой прожектора. Вы можете попробовать сбросить индексирование прожектора, добавив папку, содержащую файл dSYM (или даже ваш диск), в параметр «Запретить прожектору выполнять поиск в этих местах» в настройках прожектора, а затем сразу же удалить его.

35
ответ дан 24 November 2019 в 18:38
поделиться

Проверьте журнал сборки и убедитесь, что ваш ключ -g дошел до компилятора - легко ошибиться при изменении настроек на уровне проекта и/или цели для различных конфигураций сборки и т.д.

1
ответ дан 24 November 2019 в 18:38
поделиться

У меня возникла эта проблема, потому что проект XCode находился в общей сетевой папке, где Spotlight не мог найти файлы dSYM. Убедитесь, что он находится на локальном диске.

0
ответ дан 24 November 2019 в 18:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: