XCode 4 Шаг в не работает - PullRequest
13 голосов
/ 13 апреля 2011

Я использую XCode 4 и вижу проблему с отладкой, которой не было в 3.x.

Я ставлю точку останова в строке, где я вызываю объектный метод.

Product *p = [[Product alloc] init]; 
[p  print];  <-- Put a breakpoint here

После того, как контроль останавливается на этой линии, я пытаюсь войти в метод (F7). Но ничего не происходит. Система просто пропускает строку и переходит к следующей строке (такое же поведение, как и при перешагивании).

Шаг за шагом работает для простых проектов на языке Си. Проблема в методах Objective-C. Как мне решить эту проблему? Спасибо.

Ответы [ 7 ]

7 голосов
/ 05 ноября 2011

Не уверен, поможет ли это - перейдите в системные настройки и в общих настройках клавиатуры убедитесь, что установлен флажок «Использовать все F1 F2 и т. Д. В качестве стандартных функциональных клавиш».

F7 начал сработать на меня после того, как я проверил это.

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

3 голосов
/ 23 июня 2013

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

2 голосов
/ 09 мая 2011

Вступать в вызовы методов ObjC не всегда возможно.Как мне объяснили, существуют внутренние структуры данных времени выполнения, которые должны находиться в согласованном состоянии, чтобы надежно войти в метод ObjC.Если эти внутренние компоненты оказываются в несовместимом состоянии, когда программа останавливается на вашей точке останова, вход в отладчик завершится неудачно, и вместо этого он перешагнет вызов.Это также было верно в Xcode 3 и на самом деле не имеет ничего общего с Xcode, но является проблемой ObjC во время выполнения и отладчика.Я оцениваю анекдотично (работая в XCode полный рабочий день в течение 3 + лет), что вступление в вызов метода ObjC терпит неудачу ~ 5% времени.Я считаю, что это происходит чаще всего, когда это будет наиболее неудобно для меня.:)

Тем не менее, если вы НИКОГДА не можете войти в ЛЮБОЙ вызов метода ObjC, то, вероятно, есть еще одна проблема, так как я много раз мог заходить в вызовы метода ObjC с помощью Xcode 4, ине вижу этой проблемы более или менее часто, чем я делал с Xcode 3.

1 голос
/ 05 ноября 2011

fn + f7 всегда работает для меня. Хотя заходить в Obj-C иногда бывает странно. Вам лучше установить больше точек останова, если вы знаете, куда движется код.

0 голосов
/ 02 февраля 2014

Удалите определенный файл и добавьте файл снова.Это решает мою проблему.

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

Переключение на отладчик gdb работает для меня. Перейдите в Edit Schemes, вкладка Info для фазы Run, измените с LLDB на GDB.

Это все еще не идеально. В частности, кажется, что вам нужно многократно использовать «Шаг в инструкцию» (с соответствующей клавишей или удерживая клавишу Ctrl при нажатии кнопки шага), и чтобы увидеть регистры и т. Д., Вы должны использовать командную строку GDB внутри окна Xcode.

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

Я не достаточно разбираюсь в OSX, чтобы понять, почему это fubar, но я просто попытался изменить привязки клавиш по умолчанию на f13-f17 для всех обычных привязок пауза / продолжение, переход в / из и т.д. Работает для меня , Возможно, довольно отстойный QA в команде XCode4?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...