Несмотря на пользовательский интерфейс, lldb не может установить точки останова для определенных исключений C ++ или неправильно разрешает имя.
Я установил точку останова для std::underflow_error
, а затем с помощью команды lldb breakpoint list
определил, что она ставит только символическую точку останова на std::underflow_error
:
9: name = 'std::underflow_error', locations = 0 (pending)
Я подозреваю, что lldb никогда не разрешает std::underflow_error
в конструкторе. Смена имени в C ++ тоже может иметь к этому отношение.
Если вы создадите точку останова для всех исключений C ++, вы увидите, что она создает символическую точку останова на __cxa_throw
:
10: name = '__cxa_throw', locations = 1, resolved = 1
10.1: where = libc++abi.dylib`__cxa_throw, address = 0x01cefa44, resolved, hit count = 0
Вы можете установить точку останова в конструкторе интересующего вас исключения, предполагая, что оно создается и генерируется в одной и той же точке.