LLDB: Точки останова

Пример и памятка по основным командам LLDB для работы с breakpoint — точками останова.

Создание точек останова

Для C, и Objective-C, где имена короткие и их удобно печатать можно использовать:

(lldb) b -[UIViewController viewDidLoad]

Для C++ и Swift можно использовать команду, которая в качестве аргумента принимает регулярное выражение. Для примера, можно выполнить две команды:

(lldb) b Breakpoints.SwiftTestClass.name.setter : Swift.ImplicitlyUnwrappedOptional<Swift.String>

А теперь с регулярным выражением:

(lldb) rb SwiftTestClass.name.setter

Еще примеры:

(lldb) rb name\.setter

Это создаст точку останова на все, что содержит фразу name.setter. Это будет работать, если вы знаете, что у вас нет других свойств Swift, со свойствами name. В противном случае вы создадите несколько точек останова для каждого из этих свойств.

Можно указать символ, который обязательно должен быть в результатах поиска:

(lldb) rb '\-\[UIViewController\ '

(lldb) rb '\-\[UIViewController(\(\w+\))?\ ' // чтобы поставить точки останова не только в имплементацию классов но и в Objective-C категориях.

Слеши — это escape-символы, указывающие, что вы хотите, чтобы буквальный символ находился в поиске регулярных выражений. В результате точки останова будут поставлены на каждый метод, содержащий строку — [UIViewController, за которым следует пробел.

Позже еще раз это разобрать. На текущий момент не понятно:

Вторая строка обеспечивает необязательную скобку с одним или несколькими буквенно-цифровыми символами. А затем пробел после UIViewController в точке останова.

Ограничение области действия

Можно ограничить область расстановки точек останов одним файлом:

(lldb) rb . -f  SomeViewController.swift

Это будет полезным, если для дебаггинга выбран SomeViewController.

Также можно ограничить область конкретной библиотекой:

(lldb) rb . -s UIKit

Это установит точку останова на каждый метод в UIKit.

В библиотеке UIKit более 66 тыс. методов. Нужны дополнительные параметры, чтобы отсеивать точки останова.

(lldb) rb . -s UIKit -o

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

Список точек останова

(lldb) breakpoint list 1 - // список breakpoint с ID 1
(lldb) breakpoint list 1 -b // компакнтый список того же
(lldb) breakpoint list // списвок всех точек останова
(lldb) breakpoint list 1 3 // указанные номера групп 
(lldb) breakpoint list 1-3 // или интервал для вывода




Добавить комментарий

Ваш адрес email не будет опубликован.

*

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.