Инструменты Xcode 4 не показывают строки источника - PullRequest
27 голосов
/ 11 марта 2011

Я только начал играть с Xcode 4 и обнаружил, что независимо от того, как я настраиваю символы отладки в проекте, Instruments отказывается отображать исходные строки для элементов трассировки стека, которые соответствуют моему коду.In показывает только шестнадцатеричные смещения и идентифицирует мой исполняемый файл как модуль-владелец.Включение «Местоположение источника» также отображает пробел.Это происходит даже для скелетного проекта OpenGL ES, сгенерированного Xcode (Файл → Новый → Новый проект ... → iOS → Приложение → Приложение OpenGL ES).

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

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

Пока чтоЯ:

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

Ответы [ 8 ]

48 голосов
/ 02 января 2012

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

  1. Выберите «Файл» → «Повторно символизировать документ».… screenshot of re-symbolicate menu item
  2. Найдите свой двоичный файл в появившемся списке.Это должно быть то же имя, которое вы видите на трамплине.Выберите бинарный файл и нажмите «Найти».enter image description here
  3. Вернуться к Xcode.Удерживая нажатой клавишу «Control», щелкните свой продукт сборки .app и выберите «Показать в Finder». right-click menu screenshot showing show in finder item
  4. Откроется каталог, содержащий ваш двоичный файл, а также файл dSYM.Вернитесь в Инструменты, перейдите в этот каталог и выберите файл dSYM.Самый простой способ - просто перетащить файл dSYM прямо из Finder в диалог «Выбор dSYM» в Инструментах.
  5. Наконец, нажмите «Символизировать» в Инструментах.Теперь вы должны видеть символы в следах, а не шестнадцатеричные смещения.
44 голосов
/ 09 сентября 2011

У меня была эта проблема сегодня, и я решил ее следующим образом:

  1. Редактировать схему
  2. Нажмите «Профиль» слева (это важный шаг)
  3. Измените конфигурацию сборки на Debug

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

3 голосов
/ 07 ноября 2012

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

2 голосов
/ 08 апреля 2011

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

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

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

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

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

1 голос
/ 15 сентября 2014

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

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

Preference tabs

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

Add a search path to the list

1 голос
/ 23 сентября 2011

Одной из причин, по которой инструменты не имеют символов, может быть то, что 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 время для переиндексации, прежде чем пытаться снова.

1 голос
/ 11 марта 2011

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

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

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

Это загадка.

0 голосов
/ 18 мая 2017

Вот мое окружение ...

  • XCode 8.2
  • Mac OS v10.12 Sierra

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

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

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

  • libsqlite3.tbd вместо libsqlite3.dylib
  • libstdc ++. 6.tbd вместо libstdc ++. Dylib

Я не знаю, почему это так, но это было ЕДИНСТВЕННОЕ изменение проекта, которое я сделал, прежде чем мои символы были потеряны в Инструментах.

...