Утечки инструментов - не отображается мой исходный код - PullRequest
14 голосов
/ 08 апреля 2009

Я пытаюсь проанализировать приложение iPhone с помощью приложения Leaks, и все, кажется, работает нормально, за исключением случаев, когда я пытаюсь просмотреть подробную информацию об определенной утечке памяти. Утечки, похоже, не загружают мой исходный код. Глядя на представление стека справа, я вижу вызовы, которые ссылаются на каркасы iPhone, но все, что ссылается на исходный код, который я написал, пусто. Скриншот ниже иллюстрирует мою точку зрения. Голубые блоки должны ссылаться на мой исходный код. У кого-нибудь когда-нибудь была такая проблема? Leaks просто не находит мой исходный код / ​​символы правильно? Спасибо!

РЕДАКТИРОВАТЬ: я компилирую приложение, используя «Устройство - iPhone OS 2.2» с конфигурацией отладки. Я запускаю Leaks, выбрав Run-> Start With Performance Tool-> Leaks из Xcode. Как можно было бы «сделать файлы символов доступными» для утечек?

alt text
(источник: andrewgarrison.com )

Ответы [ 8 ]

13 голосов
/ 30 ноября 2010

Для iOS 4.0 и выше, способ исправить символы и превратить эти бесполезные адреса памяти в красивые имена файлов, имена функций и номера строк следующим образом:

  1. В Xcode, перейдите в Run -> Run with Performance Tool и выберите свой инструмент
  2. После загрузки инструментов нажмите кнопку «Стоп», чтобы остановить запись. Перейдите в Файл -> Пересимволировать документ.
  3. В новом окне нажмите «Путь» и нажмите кнопку «плюс» (+), чтобы добавить новый путь. Перейдите к папке, содержащей файл вашего проекта, и нажмите «Открыть». Нажмите Символик.
  4. Profit!

Я искал это в течение хорошего месяца, прежде чем наконец нашел решение. Я надеюсь, что это поможет некоторым из вас!

8 голосов
/ 22 сентября 2009

Я видел, как это произошло, но в другой конфигурации. В Snow Leopard 10.6.1, Xcode 3.2, Instruments 2.0 я не получал никаких символов в Leaks при запуске iPhone OS 3.0 в симуляторе. Поиск на форумах разработчиков Apple для iPhone показал, что это известная проблема с SDK для iPhone 3.0 (над которым работали), и переключение активного SDK на 3.1 было обходным путем. Конечно же, у меня это сработало!

2 голосов
/ 13 января 2011

Проект > Редактировать настройки проекта

Выберите Отладка target

Нажмите Build Tab

Убедитесь, что Strip Linked Product не отмечен

2 голосов
/ 14 мая 2009

Удалите все не-ascii символы с вашего загрузочного диска
и имя хоста (см. панель «Общий доступ» в «Системных настройках») и перезагрузите.

Та да!

1 голос
/ 03 сентября 2010

У меня была такая же проблема. Оказалось, что я установил каталог сборки в / tmp / xcode. Изменение этого значения по умолчанию устранило проблему. Это было с Xcode 3.2.3.

1 голос
/ 14 января 2010

Если ваша целевая директория сборки начинается с "." (например, я использовал «.xcode-build»), тогда файлы .dsym не будут найдены. В моем случае изменение каталога сборки на «xcode-build» решило проблему, и теперь все символы моего приложения отображаются в виде следов стека!

1 голос
/ 08 апреля 2009

Вы скомпилировали в режиме отладки и сделали файлы символов доступными?

0 голосов
/ 03 января 2013

У меня есть Snow Leopard с Xcode 4.5.2 - Инструменты 4.5 Как только я установил расположение отладки по умолчанию в Legacy, он начал показывать

Перейти к файлу ----> Настройки проекта ----> Дополнительно --- Выбрать Legacy

Debug Location ---Legacy Settings

...