2013-04-05 4 views
9

Я действительно борюсь с отладочным кодом в нашем большом проекте ios. Похоже, что все сошли с ума от посылки блоков и очередей отправки повсюду.Как я могу эффективно отлаживать блоки в Xcode

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

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

  2. Внутри блока переменные без блока не отображаются пригодным образом и не могут быть легко сброшены на консоль с помощью команды po.

Есть ли более простой или лучший способ пройти или оценить код, который изобилует блоками? Или я чего-то не хватает?

ответ

3

Вы используете точку останова с автоматическим дампом консоли (без остановки вашего приложения)?

Существует далекий от превосходного, но действительно полезного учебника about intermediate debugging.

Счастливое кодирование!

+1

Я не уверен, что вы подразумеваете под «точкой останова с автоматической консольной дамп». Кроме того, учебник был очень полезен для меня. – HalR

+0

Хорошо, вы можете установить много практических действий для точки останова (даже звуковое сообщение :). Одним из них является сообщение журнала с аналогичным синтаксисом NSLog. И он автоматически распечатает соответствующее сообщение журнала. – ingaham

1

Почему бы не использовать NSLog() для вывода необходимых переменных в блоках?

+0

Я могу добавить NSLog() в свой код, и это один из способов, которым я смотрел на вещи, но затем я меняю базу кода, и хотя я всегда могу дважды проверить с помощью элемента управления источником, я все еще может непреднамеренно добавить что-то в чужой код. Я надеялся на другие варианты. – HalR

1

Вы можете распечатать объект в консоли, с помощью этого:

Пример:

po object.name 
po object.age 

Другой способ: Поставьте точку останова в коде. Когда он прекратит выполнение в этой точке, наведите указатель мыши на него.

Для более четкой детализации, посмотрите на мой ответ на этот вопрос: How to inspect elements from NSArray and NSDictionary in xcode?

1

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

В итоге я в основном использовал NSLog. Но проблема с NSLog() заключается в том, что вы не хотите иметь все, что регистрируется в вашей версии сборки. Поэтому я бы рекомендовал использовать инструмент, как:

MWLogging

Я думаю, что это действительно здорово. Вы можете прочитать о том, что и при входе в целом в этом блоге:

iOS Development: You're Doing It Wrong

это действительно стоит читать.

+0

Или используя CocoaLumberjack :) – AndrewShmig

Смежные вопросы