我希望能够指定Xcode(lldb)的所有C ++异常的子集来打破。 UI看起来支持这个:
但是对于我的生活,我无法使它发挥作用。如果我将它设置为默认的“所有C ++异常”,它将起作用并且抛出的每个异常都会触发断点。如果我尝试按名称指定异常,则断点从不触发。
有没有其他人有这个问题,或者这只是我的问题?
答案 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
您可能能够在您感兴趣的异常的构造函数中放置断点,假设它被实例化并在同一点抛出。