【问题标题】:lldb - breaking before C++ exception thrownlldb - 在抛出 C++ 异常之前中断
【发布时间】:2015-11-18 23:38:40
【问题描述】:
在 lldb 中,我想在 C++ 抛出异常之前中断,在实际信号生成时。我想为任何类型的异常执行此操作。
以下命令将在 C++ throw catcher 上中断
断集-E c++
我想中断异常的原因并忽略 C++ 抛出/捕获,就好像应用程序正在崩溃一样。我也想为没有源的应用程序这样做。
我可以在这里使用任何 lldb voodoo 吗?
【问题讨论】:
标签:
c++
macos
exception-handling
lldb
【解决方案1】:
我不完全确定你在问什么。
C++ 中的异常抛出做两件事,创建异常对象,然后直接调用一些运行时例程(大多数 Unixen 上的 __cxa_throw)来实现展开。后者是异常断点停止的点。没有比这更初步的东西了。
您可以在分配异常对象时尝试中断。在 OS X 和 Linux 上,这是 __cxa_allocate_exception,但我不知道它是否总是会被调用,或者是否有其他方法可以产生异常......我不知道你会从中获得多少好处,但是,它是只需几条指令,您就会看到对 throw 方法的调用。
但也许如果您描述您实际尝试解决的问题,我们可以更有帮助地回答...