Как увидеть изменившееся значение переменной в дебагере?

xcode

#1

Привет всем. Есть такой код:

И есть такая инструкция:

If you build and run your app, try setting a breakpoint on this last line. Inspect the responses property of resultsViewController to see that it’s currently nil. Step over the line, and you’ll see the property update to reflect the answers you gathered while taking the quiz.

С первой частью все нормально, в дебагере видно, что responses имеет nil. Но вот дальше непонятно, нажимаю Step over и дебагер показывает только предыдущий контроллер без этого свойства. Методом тыка перепробовал все кнопки в дебагере, не помогло. Google research в свою очередь выдает мажорные статьи, что нажимай, мол, Step over и будет тебе счастье. Но вот здесь оно чего-то не происходит.

Как пройти дальше и увидеть изменившееся значение переменной?


#2

Так вы вроде не на то свойство смотрите, у вас responses это свойство объекта resultViewController. Он у вас как раз в дебагере отображается. Раскройте его и посмотрите там на свойство responses.


#3

Да, это свойство из resultViewController и оно отображается в дебагере. Но это до изменения. А вопрос именно в том, как увидеть значение этого свойства уже после изменения?


#4

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


#5

Перехожу на шаг вперед, попадаю на скобку, закрывающую условие, и вижу следующее:


Здесь не видно responses.


#6

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


#7

Пробовал смотреть на разных компьютерах, чтобы исключить глюки на своем, что потребовало какого-то времени. По итогу, в общем и целом разобрался. Похоже, что автор приведенной инструкции написал ее не совсем правильно, наверное второпях подзабыл кое-что указать. А именно, после брекпойнта на 219-й строке дебагер уходит со свойства responses и больше его не показывает.

Чтобы увидеть изменившееся свойство нужно добавить еще одну строку в данную функцию, где еще раз указать это свойство. И тогда реально видно изменение.

Привожу скриншот для таких же бегинеров, чтобы сохранить способ решения в библиотеке сайта. Сравните с первым и вторым скриншотами. Теперь один шаг вперед четко показывает, что вместо nil, который был раньше, свойство responses уже имеет три значения.


#8

Update: Похоже, что здесь не совсем так. Вполне возможно, что это зависит от фрагмента кода. А именно, в другом контроллере этой же программы, один шаг вперед в дебагере показывает изменение значения переменной без всяких дополнительных строк - см. скрин.

Более того, в этот раз появились и всплывающие подсказки, которые тоже показывают значения переменных и др.

Отсюда, я подумал, что возможно это Xcode чудит. Оно иногда такое бывает и об этом здесь на форуме тоже несколько раз говорили. Т.е. однажды он почему-то не работает в каких-то отдельных моментах, а потом вдруг через день-другой та функциональность начинает работает.

Заодно решил проверить еще раз первый фрагмент кода, но изменившееся значение переменной все равно не показывает без дополнительной строки. Значит все-таки причина в особенностях фрагмента кода. И странно, что здесь же в первом фрагменте кода, и всплывающие подсказки вроде появились, но заставить их показаться очень трудно, они то есть, то их нет.


#9

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