Отладка Xcode с iPhone-приложением медленная и медленная

Я отлаживаю приложение для iPhone, которое я пишу в Xcode, но иногда теперь отладчик (который является GDB) замедляет работу (делая пошаговую отладку) и иногда становится неактуальным (значки для входа в систему, переключение, пошаговое выключение недоступны), после чего он возвращается к нормальному состоянию и продолжается, а в других случаях он остается таким же навсегда или появляется сообщение на консоли: "Timed out" (или что-то подобное), и я вижу мой процессор от монитора активности до 90%. Как обходной путь я использовал, чтобы поставить brekpoint после строки кода, в которой я был заинтересован, и просто пошел с "Продолжить" до "Продолжить" (при этом он работает отлично и быстро). Может ли это быть зависимым от кода? Есть ли способ отлаживать отладчик (поведение)?

UPDATE: Полное сообщение

Timed out fetching data. Variable display may be inaccurate.

Googling для него я обнаружил, что это происходит, когда Xcode gdb пытается заглянуть внутрь форматировщиков данных. Кто-то предложил отключить Run > Variable View > Use Data Formatter (в xcode 3.2, предыдущий, я думаю, это Debug- > Variables View- > Enable Data Formatters), и, похоже, это работает и для меня (до сих пор) Итак, теперь я спрашиваю: почему?: D

UPDATE2: Это решило отладчик от остановки на определенной части кода, но он зависает (с тем же сообщением) в другом вызове. Мне кажется, что это связано с некоторыми API CoreData, такими как (NSEntityDescription*)entityForName: inManagedObjectContext:

Update3: Было бы лучше кешировать NSEntityDescription, а не создавать всегда новый?

Ответ 1

У меня была такая же проблема, и я нашел ответ на обсуждение Apple:

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

Ответ 2

Итак, никто не имеет ответа на это? В коротком испытании отключение форматирования могло бы помочь (но симптом настолько случайный, что трудно сказать с какой-либо определенностью). И отладчик почти бесполезен без форматирования.

Ответ 3

Попробуйте запустить код в Инструментах. Это может быть проблемой памяти, поэтому следите за тем, как вы используете утилиту в качестве кода. Когда вы дойдете до той части, где она становится все менее и менее отзывчивой, вы должны увидеть, что использование памяти идет вверх и можно отследить оттуда в Инструментах.

Надеюсь, это поможет!

Ответ 4

У меня была такая же проблема, и я решил отключить опцию " Запустить" - " Включить/отключить Guard Alloc" в xCode. Теперь он работает так быстро! Проверьте, включен ли этот параметр и отключите его.

Надеюсь, это поможет!: D

Ответ 5

Я также столкнулся с такой же проблемой, как только я перешел на xCode 3.2. я использовал xcode 3.0 и 2.0, я никогда не сталкивался с этой проблемой в этих SDK. Поэтому я думаю, что это проблема с новым SDK.

Ответ 6

Вы пишете много вещей на консоли? Это серьезно замедляет все в моем опыте.

Ответ 7

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

В основном есть два человека, у которых было много проблем с отладкой xcode, и OP решила свою проблему с помощью чистой установки. Цитирование LucasTizma Четвертое редактирование:

Наконец, отладка устройства будет работать. У меня такое ощущение, что что-то Низкий уровень на моем устройстве вызывал проблемы... ничего я не работал над своим система. Однако я установил Xcode на другая система и отладка устройства на то же устройство (с тем же кабелем) работала безупречно. Непосредственно после что отладка устройств начала работать на моей оригинальной машине, что привело меня к что некоторые странные аппаратные средства флаг был привинчен и как-то "reset" на второй машине. В любой case, теперь он работает.

Ответ 8

Я наблюдал очень медленную отладку, когда в схеме включена "Отладка очереди". Если вам не нужна отладка очереди, подумайте о ее отключении.