Главная » iPhone, Objective-C, Программирование для iOS и MacOS » Просмотр кадров в отладчике Objective-C

0

Вы можете воспользоваться отладчиком для просмотра кадров в стеке, однако для этого придется прервать выполнение вашей программы на середине. В противном случае функция main() отработает до конца, и никаких кадров не останется. Чтобы увидеть как можно больше кадров в программе BeerSong, следует прервать выполнение в строке, которая выводит сообщение «Тhеге аrе simply no more bottles of bеег on the wall».

Как это сделать? Найдите в файле main.c строку

printf ("Тhеге аrе simply no more bottles of bеег on the wall,\n");

Слева от кода находятся два слегка затененных столбца. Щелкните на более широком, левом столбце рядом с приведенной строкой.

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

Сейчас ваша программа «застыла на месте», и вы можете изучить ее более внимательно. В области навигатора щелкните на значке , открывающем навигатор отладки. В этом навигаторе отображаются все кадры, находящиеся в стеке в данный момент (эта информация также называется трассировкой стека).

Рис. 5.6. Установка точки прерывания

В трассировке стека кадры идентифицируются по именам своих функций. С учетом того, что наша программа состоит почти исключительно из рекурсивной функции, в кадрах будут указаны одинаковые имена, а различать их придется по передаваемому значению oneFewer. В самом конце стека, конечно, расположен кадр функции main().

Выбрав кадр, можно просмотреть переменные в этом кадре и исходный код текущей выполняемой строки кода, Выберите кадр первого вызова singTheSong.

В левой нижней части окна находится список переменных выбранного кадра с их текущими значениями. Справа в области, называемой консолью, отображается вывод программы. (Если консоль не видна, найдите кнопки у правого края экрана. Щелкните на средней кнопке, чтобы открыть консоль). На консоли виден эффект установки точки прерывания: программа остановилась до достижения последней строки, завершающей «песню».

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

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

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

Рис. 5.7. кадры рекурсивной функции в стеке

Источник: Аарон Хилегас, «Objective-C. Программирование для iOS и MacOS», 2012 г.

По теме:

  • Комментарии