lldb: точка останова при исключениях (эквивалент catch throw gdb)

#debugging #llvm #lldb

#отладка #llvm #lldb

Вопрос:

Я пытаюсь использовать lldb для отладки c и хочу остановить, если генерируется исключение, подобное gdb catch throw , и я не могу найти эквивалент в документации lldb.

Ответ №1:

Используется breakpoint set -E c для прерывания всех исключений и breakpoint set -F std::range_error для прерывания определенного исключения.

Ответ №2:

В Xcode вы можете установить точку останова исключения (Просмотр> Навигаторы> Показать навигатор точек останова, нажмите кнопку в нижней части окна списка точек останова, чтобы добавить новую точку останова).

Если вы используете lldb командной строки, установите точку останова __cxa_throw для генерирования исключений C , objc_exception_throw для генерирования исключений Objective-C.

Для всех исключений c : break set -E C .

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

1. для всех исключений c : набор прерываний -E c

2. ах, я пропустил опцию -E для установки точки останова! Спасибо, что отметили это.

3. Варианты ‘-F’ и ‘-E’ у меня не работали, но ‘точка останова -n __cxa_throw’ работала (для всех исключений), а также ‘точка останова -n <имя исключения>’ (для конкретных исключений).

4. «-E objc» также работает, если вам нужны исключения Objective-C.

5. break set -E c у меня не сработало (возможно, потому, что я использую настоящий GNU g вместо clang от Apple?), но break set -n __cxa_throw сработало. Комментарий @AnthonyHall отсутствует set .

Ответ №3:

Я думаю, breakpoint set -w <boolean> это правильный ответ, который вы можете использовать help breakpoint set для просмотра документа.