【发布时间】:2012-03-26 06:04:41
【问题描述】:
我希望能够为 Xcode (lldb) 指定要中断的所有 C++ 异常的子集。 UI 中似乎支持此功能:
但是为了我的生活,我无法让它发挥作用。如果我将其设置为默认的“所有 C++ 异常”,它会起作用,并且抛出的每个异常都会触发断点。如果我尝试按名称指定异常,则从不触发断点。
还有其他人对此有问题吗,或者这只是我的问题?
【问题讨论】:
我希望能够为 Xcode (lldb) 指定要中断的所有 C++ 异常的子集。 UI 中似乎支持此功能:
但是为了我的生活,我无法让它发挥作用。如果我将其设置为默认的“所有 C++ 异常”,它会起作用,并且抛出的每个异常都会触发断点。如果我尝试按名称指定异常,则从不触发断点。
还有其他人对此有问题吗,或者这只是我的问题?
【问题讨论】:
尽管有 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
您可能可以在您感兴趣的异常的构造函数中放置一个断点,假设它在同一点被实例化并抛出。
【讨论】: