如何在没有调试符号的情况下确定从外部库抛出的异常?

时间:2012-07-25 14:32:26

标签: c++ gdb try-catch

我遇到了类似下面的C ++代码问题:

try {

        /* some code here */

} catch(...) {

        /* ... */
}

我正在使用gdb逐步执行try块中包含的代码,并且某些时候正在抛出某些东西。我真的不知道它是什么,因为抛出的函数调用来自一个库,没有与之关联的调试符号。

gdb是否有办法确定catch块中捕获的内容?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用call current_exception(),如果您的平台支持,则会为当前例外返回exception_ptr。但是,没有详细说明exception_ptr中包含的内容,但您可以使用x进行检查,看看是否可以解决问题。

某些寄存器也可能包含当前的异常数据,但您没有指定您正在使用的架构。