Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Основные команды LLDB для iOS-разработчика
LLDB (Low Level Debugger) — это отладочный движок, используемый в Xcode, который пришел на смену GDB. Он предоставляет мощные возможности для отладки iOS-приложений. Я активно использую его в ежедневной работе, разделю команды на ключевые категории.
Управление выполнением программы
# Основные команды контроля потока
process continue (или c) # Продолжить выполнение
thread step-over (или n) # Шаг с обходом (next)
thread step-in (или s) # Шаг с заходом (step in)
thread step-out (или finish) # Шаг с выходом
thread step-inst (или si) # Шаг на уровне инструкций
Остановки (breakpoints) — фундаментальный инструмент:
breakpoint set (или b) # Установить точку останова
breakpoint set -n viewDidLoad # Остановка на методе
breakpoint set -f ViewController.swift -l 42
breakpoint list # Список всех точек
breakpoint delete 1 # Удалить точку с ID 1
breakpoint disable/enable # Включить/выключить точку
Работа с данными и памятью
Выражения и вывод значений — одна из самых полезных возможностей:
expression (или e) # Вычислить выражение
po object # Вывести описание объекта
p variable # Распечатать значение
frame variable # Показать локальные переменные
Пример использования в контексте Swift:
// В точке останова в коде:
po self.view.subviews.count // Количество сабвью
p self.title // Распечатать заголовок
e self.view.backgroundColor = .red // Изменить цвет
Проверка памяти и адресов:
memory read/32bx 0x1234 # Чтение памяти в hex
memory write 0x1234 0x5 # Запись в память
register read # Чтение регистров
Анализ стека вызовов и потоков
Работа со стеком критична при анализе сложных ошибок:
thread backtrace (или bt) # Трассировка стека текущего потока
bt all # Трассировка всех потоков
frame select 2 # Перейти к фрейму #2
frame info # Информация о текущем фрейме
thread list # Список всех потоков
thread select 3 # Выбрать поток #3
Расширенные возможности и настройки
Визуализация данных через команды форматирования:
type format add -f hex NSInteger # Вывод в hex формате
type summary add UIView -s "${var.frame}"
# Кастомный summary для UIView
Работа с образами и модулями:
image list # Список загруженных библиотек
image lookup -r UIView # Поиск символов
image lookup -a 0x1234 # Поиск по адресу
Практические сценарии использования:
- Отладка рекурсивных вызовов:
btдля анализа глубины стека - Анализ утечек памяти: проверка адресов объектов через
po - Динамическое изменение UI:
e UIView.animate(withDuration: 0.3) { ... } - Отладка многопоточных проблем:
thread listи анализ состояния потоков
Полезные трюки и советы
- Используйте
.lldbinitфайл для настройки алиасов и автоматизации - Комбинация
breakpoint command addпозволяет выполнять скрипты при срабатывании точек останова - Регулярные выражения в breakpoints:
breakpoint set -r "\\[UIView.*\\]" - Для Swift используйте полные имена типов с пространством имен:
MyApp.ViewController
В Xcode многие команды доступны через GUI, но знание консольных команд LLDB дает более тонкий контроль и позволяет автоматизировать сложные сценарии отладки. Например, можно создать сложную точку останова, которая срабатывает только при определенных условиях и автоматически логирует состояние приложения.
В профессиональной разработке особенно ценятся команды для инспекции памяти, анализа конкурентных проблем и динамического изменения состояния приложения без пересборки.