我在Xcode 4.3中对C ++异常断点缺少什么?

时间:2012-03-08 18:43:24

标签: ios xcode exception

我希望能够指定Xcode(lldb)的所有C ++异常的子集来打破。 UI看起来支持这个:

ScreenShot

但是对于我的生活,我无法使它发挥作用。如果我将它设置为默认的“所有C ++异常”,它将起作用并且抛出的每个异常都会触发断点。如果我尝试按名称指定异常,则断点从不触发。

有没有其他人有这个问题,或者这只是我的问题?

1 个答案:

答案 0 :(得分:3)

尽管有UI,但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

您可能能够在您感兴趣的异常的构造函数中放置断点,假设它被实例化并在同一点抛出。