Ответ
Ключевые команды LLDB для отладки iOS/macOS приложений:
po(print object) – вычисляет и выводит описание объекта, используя егоdebugDescription. Основная команда для инспекции объектов.(lldb) po someViewController.view (lldb) po myArray.countp(print) – вычисляет выражение и выводит результат с указанием типа. Часто используется для примитивных типов.(lldb) p self.view.frame.size.widthexpr(expression) – позволяет выполнить произвольное выражение Swift/Objective-C, изменяя состояние программы в рантайме.(lldb) expr self.view.backgroundColor = UIColor.red (lldb) expr let $newVar = 42bt(backtrace) – выводит стек вызовов (call stack) текущего потока.frame variable– показывает все локальные переменные в текущем кадре стека. Сокращенноfr v.breakpoint set– устанавливает точку останова.(lldb) breakpoint set -n "-[MyClass myMethod:]" # По имени метода (lldb) breakpoint set -f ViewController.swift -l 42 # По файлу и строкеimage lookup– полезен для диагностики крашей. Например, поиск символа по адресу.(lldb) image lookup -a 0x0000000100003a00
Ответ 18+ 🔞
Слушай, вот ты сидишь, дебажишь своё приложение, а оно, сука, как назло, падает в самом неожиданном месте. И ты такой: "Ну что за хуйня?". А всё потому, что без правильных команд в LLDB ты как слепой котёнок — только тыкаешься носом в экран и орешь. Ёпта, давай разберём эту магию, чтобы ты не выглядел полным лузером.
Вот, например, святая святых — команда po. Это твои глаза и уши, блядь. Хочешь посмотреть, что там внутри у объекта твоего? Не надо строить догадки, как гадалка на вокзале. Просто вбей po someViewController.view и получи развёрнутый ответ, как будто этот объект сам тебе на коленки сел и всё про себя рассказал. Красота же!
А если тебе нужно не просто посмотреть, а ещё и что-то поменять на лету, чтобы не перезапускать сборку, которая, как всегда, собирается овердохуища времени? На помощь приходит expr. Это твоя волшебная палочка, ёбана. Захотел покрасить вьюху в красный? expr self.view.backgroundColor = UIColor.red — и готово, пиздец. Создать временную переменку? expr let $newVar = 42 — и вот она, твоя переменная, живая и здоровая. Главное — не увлекись, а то наломаешь таких дров, что потом и не соберёшь.
Ну а когда приложение всё-таки накрылось медным тазом и ты видишь лишь адрес в логах, от которого волосы дыбом встают, не паникуй. Не надо материть всех подряд. Берёшь команду image lookup -a и подсовываешь ей этот адрес. Она тебе, хитрая жопа, тут же раскажет, какой именно метод или переменная по этому адресу жили. Это как детектив по расследованию убийств, только для кода.
И запомни, чувак: p — для примитивов (циферки, булево и прочая мелочь), а po — для объектов, чтобы они свои debugDescription показали. Не путай, а то будешь выглядеть как манда с ушами.
Короче, бери эти команды, вбивай их в свою башку и пользуйся. А то будешь сидеть и бздеть от каждой ошибки, как новичок. Удачи, ебушки-воробушки.