Xcode останавливается на точках останова и кажется зависает - PullRequest
1 голос
/ 09 ноября 2010

Я пытаюсь отладить небольшой прототип для приложения для iPhone (iOS Simulator 4.1), скомпилированного как Debug, со всей конфигурацией, видимо, в порядке.

Приложение использует графический движок Cocos2d и библиотеку GDataXMLNode (для чтения XML).Там не так много вещей происходит.Но при определенном методе, если я устанавливаю точку останова, gdb просто «останавливается».

Вот строка состояния отладчика после того, как он достигнет точки останова:

alt text

А вот код с точкой останова (снимок):

alt text

примечание : точка останова может быть где угодно в этой функции, и она одинакова.

И это код вызова (из другого объекта)

self.map = [SimulationLoader loadMap];

Ни одна из кнопок редактора не работает, если в «loadMap» установлена ​​точка останова (шаг вперед, шаг вперед, следующий,продолжить выполнение и т. д.). Я могу остановить и / или перезапустить отладку, и она работает (но возвращается к началу). Приглашение gdb позволит мне написать, но ничего не происходит. Я не могу просмотреть значения объектов или что-либо связанное с отладкойЯ не могу возобновить выполнение, оно ничего не сделает.

Странно то, что если я поставлю точку останова до или после этой строки (loadMap), все это работает, и я могу выйти или, отладить его и сделатьвсе, что я хочу сделать.

Чего мне не хватает?

Через пару секунд после достижения «сбойной» точки останова (и «зависания») окно стека очищается.Я считаю, что все это происходит потому, что GDB остановился, но вопрос в том, почему он останавливается там?Каковы ограничения для этого?

Я компилирую с LLVM GCC 4.2 для чего стоит (но, возможно, может измениться на другой, если это проблема, не пробовал это, потому что я не знаю много оразличия).

1 Ответ

0 голосов
/ 18 декабря 2010

Есть ли что-то (может быть, в вашем классе Map?), Что требует времени? Например, двойное касание, которое прерывается из-за срабатывания точки останова в этой точке?

(т. Е. Точка останова => зарегистрировано двойное касание, точка останова => второе нажатие происходит после попадания точки останова, поэтому регистрируется только одно касание.)

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

...