Добрый день, сегодня предлагаю вашему вниманию вторую часть статьи об отладке приложения в LLDB. В первой части мы разобрались, как использовать точки останова в Xcode для изменения существующих свойств переменных и добавления строки кода с помощью команд-инструкций.
Я намеренно создал демонстрационный проект с несколькими ошибками, чтобы понять, как использовать различные типы точек останова в LLDB для отладки приложения.
Если вы не изучили первую часть статьи, лучше начать с нее.
Напомню важное правило этого туториала: До конца этой статьи вы не останавливаете компилятор и не перезапускаете приложение после самого первого запуска.
Вы исправляете ошибки во время работы программы.
Точки наблюдения Итак, в приложении возникает следующая ошибка: 3. Вы можете загружать посты более 7 раз.
Как воспроизвести ошибку:
- Включите Интернет на вашем iPhone/симуляторе
- Прокрутите вниз до нижней части таблицы, чтобы загрузить больше сообщений.
- Вы сможете загружать посты более 7 раз (Хотя в этом приложении у пользователя не должно быть такой возможности).
номер страницы после загрузки новых сообщений на страницу.
Поскольку вы еще не очень хорошо знакомы с моим кодом, вам придется потратить некоторое время, чтобы понять, что в нем происходит. Не нужно беспокоиться.
Давайте воспользуемся немного магией.
Из первой части статьи мы узнали, что HTTP-запрос GET выполняется в разделе Прагма Марк Сеть .
Он содержит ровно одну функцию loadPosts .
Поместите точку останова в первой строке этой функции и потяните таблицу вниз для обновления.
Компилятор остановится на этой точке останова.
Цель-C
Быстрый
В нижнем окне отладчика нажмите кнопку «Показать переменные».
Слева появится новое окно, в котором вы увидите все переменные PostsTableViewController.
Наведите курсор на переменную pageNumber, щелкните правой кнопкой мыши и выберите «Watch _pageNumber» / «Watch pageNumber» для Objective-C и Swift соответственно.
Цель-C
Быстрый
Таким образом вы создали так называемую точку наблюдения за переменной.
номер страницы .
Точка наблюдения — это тип точки останова, которая останавливает отладчик каждый раз, когда изменяется значение установленной для него переменной.
Цель-C
Быстрый
Продолжайте работу с программой.
Отладчик остановится, и вы увидите что-то вроде этого: Цель-C
- Запись старых и новых значений переменных номер страницы .
- Отслеживание стека кода, который меняет значение переменной номер страницы .
- Текущая точка, вызвавшая изменение переменной.
номер страницы – метод установки этой переменной.
Быстрый
- Отладчик сообщает вам, что установленная вами точка наблюдения что-то обнаружила.
- Отслеживание стека кода, который меняет значение переменной номер страницы .
- Текущая точка, вызвавшая изменение переменной.
номер страницы – функция ОбновлениеForNetworkCallEnd .
Эта переменная может иметь 2 состояния: либо активное («активное»), либо неактивное («неактивное»).
Состояние «активно» предполагает, что пользователь может загружать посты (то есть лимит в 7 загрузок не достигнут).
Состояние «неактивно», наоборот, предполагает, что пользователь больше не сможет загружать посты.
В результате нам нужно добавить логику в функцию ОбновлениеForNetworkCallEnd , который проверит переменную номер страницы и установит переменную состояние соответствующее состояние.
Как вы уже догадались, гораздо проще сначала проверить гипотезу, не останавливая компилятор перед внесением изменений в код. Отмечу, что в разделе Прагма Марк Поддержка у нас уже есть нужная нам функция ( setToInactiveState ), который устанавливает переменную состояние состояние «неактивно».
Добавьте точку останова на одну строку выше условия если .
Также добавьте в отладчик следующую команду инструкции.
Цель-C
expression if (self.pageNumber >= 7) {[self setToInactiveState]}
Быстрый
expression if (self.pageNumber >= 7) {setToInactiveState()}
После этого удалите самую первую точку останова, которую вы использовали для установки точки наблюдения.
Также деактивируйте саму точку наблюдения.
Цель-C
Цель-C
Быстрый
Быстрый
Теперь прокрутите таблицу до верха, потяните вниз, чтобы обновить ее, и начните прокрутку.
Все получилось! Но праздновать пока рано, нам осталось исправить одну ошибку! Что дальше? Заключительная, третья часть статьи, в которой мы узнаем о другом типе точек останова — символических точках останова.
Теги: #разработка iOS #разработка мобильных приложений #мобильные приложения #отладка
-
Введение В Управление Кампаниями Ppc
19 Oct, 24 -
Каким Должен Быть Персональный Компьютер?
19 Oct, 24 -
Плохое Поведение Триллиан
19 Oct, 24 -
«Специальные» Винты От Sony
19 Oct, 24 -
Клетка Со Всеми Удобствами
19 Oct, 24 -
Выбор Стратегии Запуска И Развития Проекта
19 Oct, 24 -
Почему Wysiwyg — Отстой?
19 Oct, 24