Подтвердить что ты не робот

XCode 4 Step in не работает

Im использует XCode 4 и видит проблему с отладкой, которая не существовала в 3.x.

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Тем не менее, если вы НИКОГДА НЕ МОЖЕТЕ ВХОДИТЬ В ЛЮБЫЙ вызов метода ObjC, тогда, вероятно, возникнет другая проблема, так как я могу многократно использовать метод ObjC с Xcode 4 и не вижу этого проблемы или более часто, чем с Xcode 3.

Ответ 4

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

Ответ 5

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

Ответ 6

Переключение на отладчик gdb работает для меня. Перейдите на "Редактировать схемы", вкладку "Информация" для этапа "Запуск", измените значение с LLDB на GDB.

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

Ответ 7

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