2

我在使用类似于以下代码的 C++ 代码时遇到了一些问题:

try {

        /* some code here */

} catch(...) {

        /* ... */
}

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

gdb 有没有办法确定在 catch 块中捕获了什么?

4

1 回答 1

1

您可以尝试call current_exception(),如果您的平台支持,它将exception_ptr为当前异常返回一个。然而,它并没有具体说明 exception_ptr 中包含的内容,但您可以检查它x以查看是否可以解决问题。

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

于 2012-07-25T14:49:57.683 回答