Подтвердить что ты не робот

Xcode 4 Instruments не показывает исходные строки

Я только начал играть с Xcode 4 и обнаружил, что независимо от того, как я настраиваю отладочные символы в проекте, инструменты отказываются отображать исходные строки для элементов трассировки стека, которые соответствуют моему коду. В нем отображаются только шестнадцатеричные смещения и идентифицируется мой исполняемый файл как модуль-владелец. Включение "Source Location" также создает пробел. Это происходит даже для проекта OpenGL ES скелета, созданного с помощью приложения Xcode (File → New → New Project... → iOS → Application → OpenGL ES).

Эта проблема возникает только в инструментах (я уже пробовал отслеживать CPU и OpenGL). Gdb отлично подходит для отладочных символов.

Нужно ли мне что-то делать, чтобы увидеть исходный код для стеков в Инструментах, или это ошибка в Xcode 4?

До сих пор я:

  • Изменено Debug Information Format от DWARF with dSYM File до DWARF.
  • Изменено Strip Debug Symbols During Copy от Yes до No.
  • Изменена схема сборки для использования сборки Debug вместо сборки Release с помощью инструментов.
4b9b3361

Ответ 1

Другие ответы - это хорошие долгосрочные исправления. Если вы предпочтете не ждать, пока Spotlight перестроит свой индекс и просто нужно будет получить символы для одного сеанса Instruments, вы можете попросить "Инструменты" символизировать текущий сеанс.

  • Выберите "Файл" → "Повторно символический документ"... screenshot of re-symbolicate menu item
  • Найдите свой двоичный файл в появившемся списке. Это должно быть то же имя, которое вы видите на Springboard. Выберите свой двоичный файл и нажмите "Найти". enter image description here
  • Вернитесь к Xcode. Control-click на вашем продукте .app build и выберите "Показать в Finder". right-click menu screenshot showing show in finder item
  • Это откроет каталог, содержащий ваш двоичный файл, а также его файл dSYM. Вернитесь в "Инструменты", перейдите в этот каталог и выберите свой dSYM файл. Самый простой способ - просто перетащить файл dSYM прямо из Finder в диалоговое окно "Выбрать dSYM" в "Инструменты".
  • Наконец, нажмите "Символизировать" в "Инструменты". Теперь вы должны видеть символы в трассах, а не в гексагонарных смещениях.

Ответ 2

У меня была эта проблема сегодня и решил ее так:

  • Изменить схему
  • Нажмите "Профиль" слева (это важный шаг)
  • Изменить конфигурацию конфигурации для отладки

Это должно сделать это. Обратите внимание, что по какой-либо причине цель сборки не настроена на ту же конфигурацию сборки, что и цель профиля, и это сработало больше времени или два.

Ответ 3

Попробуйте выбрать другой идентификатор подписи кода, то есть профиль подготовки, для конфигурации Release.

Ответ 4

Я выяснил, в чем проблема, поскольку у меня была такая же проблема.

Ответ исходит из: Отсутствующие имена символов при профилировании приложения IPhone с помощью инструментов

  • Убедитесь, что вы скомпилировали свой код с включенными флагами отладки (например, -g3).
  • Выполните dsymutil в своей бинарной/динамической библиотеке, для которой вы хотите получить доступ к информации об отладке.

Это создает папку пакета dSYM, а при индексировании Spotlight информация об отладочной информации становится доступной для инструментов.

Я полагаю, что в вашем случае потребовалось некоторое время, прежде чем Spotlight проиндексировал вещи - и когда это было, тогда все волшебство получилось.

Ответ 5

Он только начал работать; нет рифмы или причины.

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

В emacs я открывал символический crash script (он был замечен в другом месте, это проблема), и он начал работать после того, как я это сделал. Но ни в коем случае я не изменил или не сохранил его.

Это тайна.

Ответ 6

Одной из причин для инструментов, не имеющих символов, может быть то, что Spotlight не может найти файл dSYM. Таким образом, ваше изменение от DWARF with dSYM до DWARF не является хорошей идеей. Вы должны изменить его, так как без файла dSYM вы все равно не получите символов (по крайней мере, это похоже на Snow Leopard, я видел сообщения о том, что некоторые люди также получили символы без файлов dSYM, однако все эти люди использовали Лев). После внесения изменений убедитесь, что вы создали чистую сборку (иногда Xcode не может создать файл dSYM в моей системе для нечистых сборок).

Если после этого вы все равно не получите никаких символов, что-то не так с вашей базой данных Spotlight. Попробуйте добавить папку, содержащую файлы dSYM, после сборки в список папок. Spotlight не должен индексироваться, а затем удалять его из этого списка. Это заставляет Spotlight повторно индексировать файлы.

Если это также не помогает, возможно, ваш индекс Spotlight полностью поврежден. В этом случае попробуйте следующее на терминале:

sudo mdutil -i off /
sudo mdutil -E /
sudo mdutil -i on /

Это приводит к тому, что Spotlight сначала останавливает индексирование основного жесткого диска, а затем удаляет все данные индекса, собранные в прошлом, и затем начинает их переиндексацию. Вышеприведенные строки предполагают, что ваши файлы dSYM расположены на основном жестком диске (а не на любом другом жестком диске или сетевом томе, иначе вы должны заменить "/" соответствующей точкой монтирования этого тома). Дайте Spotlight некоторое время для переопределения, прежде чем повторять попытку.

Ответ 7

В новых версиях инструментов (у меня есть 5.1.1 (55045)) вы можете добавить дополнительные пути для поиска dSYM и исходного кода

Откройте "Настройки", затем перейдите на вкладку "dSYMs And Paths".

Preference tabs

Затем добавьте свой путь к списку.

Add a search path to the list

Ответ 8

Здесь моя среда...

  • XCode 8.2
  • Mac OS v10.12 Sierra

У меня была такая же проблема, что и в симуляторе, и это приводило меня в бешенство, потому что ВСЕ стандартные исправления не работали.

Что для меня было подключение моего iPad в MacBook и запуск сеанса инструментов против указанного приложения на моем подключенном iPad. Инструменты правильно символизировали мое приложение при работе на iPad, а затем продолжали работать, когда я отключил iPad и запускал инструменты позже в симуляторе.

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

  • libsqlite3.tbd вместо libsqlite3.dylib
  • libstdС++. 6.tbd вместо libstdС++. dylib

Я не знаю, почему это так, но это было единственное изменение проекта, которое я сделал до того, как мои символы были потеряны в Инструментах.