我正在尝试使用lldb进行C++调试,希望在异常抛出时停止程序运行,就像gdb的catch throw
命令一样,但是在lldb文档中找不到类似的命令。
使用breakpoint set -E c++
来在所有异常处中断,使用breakpoint set -F std::range_error
来在特定异常处中断。
在Xcode中,您可以设置异常断点(查看>导航器>显示断点导航器,在断点列表窗口底部点击+按钮添加新断点)。
如果您正在使用命令行lldb,请在C++异常抛出时放置一个__cxa_throw
断点,在Objective-C异常抛出时放置一个objc_exception_throw
断点。
对于所有的C++异常:break set -E C++
。
我认为breakpoint set -w <boolean>
是正确的答案,你可以使用help breakpoint set
查看文档。
break set -E c++
对我没用(可能是因为我使用的是真正的GNU g++而不是Apple的clang++?),但break set -n __cxa_throw
有效。@AnthonyHall的评论缺少set
。 - Mark Gates