Отладка XCode с приложением iPhone медленная и медленная - PullRequest
13 голосов
/ 12 июля 2010

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

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

Timed out fetching data. Variable display may be inaccurate.

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

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

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

Ответы [ 8 ]

3 голосов
/ 14 февраля 2018

Я наблюдал очень медленную отладку, когда в схеме включена «Отладка очереди».Если вам не нужна отладка очереди, рассмотрите возможность ее отключения.

1 голос
/ 17 ноября 2010

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

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

1 голос
/ 03 мая 2011

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

1 голос
/ 10 ноября 2010

Ты много чего пишешь в консоль?Это сильно замедляет все в моем опыте.

0 голосов
/ 10 ноября 2010

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

В основном там есть два человека, у которых было много проблем с отладкой xcode, и ОП решил его проблему с помощью чистой установки. Цитата LucasTizma * 4-я редакция :

НАКОНЕЦ получил отладку устройства для работы. У меня есть ощущение, что что-то низкий уровень на моем устройстве вызывал проблемы ... ничего я не работал на моем система. Тем не менее, я установил Xcode на отладка другой системы и устройства то же устройство (с тем же кабелем) работал без нареканий. Сразу после что отладка устройства начала работать на моей оригинальной машине, что привело меня к считаю, что какое-то странное оборудование флаг был испорчен и как-то «сброс» на второй машине. В любой случай, он работает сейчас.

0 голосов
/ 01 ноября 2010

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

0 голосов
/ 13 октября 2010

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

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

0 голосов
/ 12 июля 2010

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

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

...