Что мне не хватает в точках останова исключений C ++ в Xcode 4.3? - PullRequest
5 голосов
/ 08 марта 2012

Я хочу иметь возможность указывать подмножество всех исключений C ++ для Xcode (lldb), на которые нужно разбить.Похоже, это поддерживается в пользовательском интерфейсе:

ScreenShot

Но я не могу заставить его работать.Если я оставлю для него значение «Все исключения C ++» по умолчанию, оно будет работать, и каждое выброшенное исключение вызовет точку останова.Если я пытаюсь указать исключение по имени, точка останова никогда не срабатывает.

У кого-нибудь еще были проблемы с этим, или это только моя проблема?

1 Ответ

3 голосов
/ 17 марта 2012

Несмотря на пользовательский интерфейс, 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

Вы можете установить точку останова в конструкторе интересующего вас исключения, предполагая, что оно создается и генерируется в одной и той же точке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...