【问题标题】:lldb: Breakpoint on exceptions (equivalent of gdb's catch throw)lldb:异常断点(相当于gdb的catch throw)
【发布时间】:2011-12-28 16:08:40
【问题描述】:

我正在尝试使用 lldb 进行 c++ 调试,如果抛出异常,我想停止,例如 gdb 的 catch throw,但我在 lldb 文档中找不到等效项。

【问题讨论】:

    标签: debugging llvm lldb


    【解决方案1】:

    使用break set -E c++ 中断所有异常,使用break set -F std::range_error 中断特定异常。

    【讨论】:

      【解决方案2】:

      在 Xcode 中,您可以设置一个 Exception 断点(查看 > 导航器 > 显示断点导航器,点击断点列表窗口底部的 + 按钮以添加新断点)。

      如果您使用的是命令行 lldb,请在 __cxa_throw 上设置断点以引发 C++ 异常,objc_exception_throw 以引发 Objective-C 异常。

      对于所有 c++ 异常:break set -E C++

      【讨论】:

      • 对于所有 c++ 异常:break set -E c++
      • 啊,我错过了设置断点的-E选项!感谢您的关注。
      • '-F' 和 '-E' 变体对我不起作用,但 'breakpoint -n __cxa_throw' 确实有效(对于所有异常),以及 'breakpoint -n '(用于特定例外)。
      • "-E objc" 如果你想要 Objective-C 异常也可以工作。
      • break set -E c++ 对我不起作用(可能是因为我使用的是真正的 GNU g++ 而不是 Apple 的 clang++?),但 break set -n __cxa_throw 对我有用。 @AnthonyHall 的评论缺少 set
      【解决方案3】:

      我认为breakpoint set -w <boolean>是正确答案,你可以使用help breakpoint set查看文档。

      【讨论】:

        猜你喜欢
        • 2012-02-18
        • 1970-01-01
        • 2012-08-25
        • 2011-10-11
        • 1970-01-01
        • 1970-01-01
        • 2012-11-01
        • 1970-01-01
        • 2017-01-08
        相关资源
        最近更新 更多