0

我正在尝试跟踪 std::exception 的来源,在 basic_string::erase 中,我将我直接调用擦除的所有位置包装在 try/catch 中,并且没有看到任何这些 catch 块被击中,所以它必须从另一个 basic_string 方法内部调用。该异常似乎是我正在使用的代码中竞争条件的结果,因此很难重现,关于我如何检测和/或从此异常获取堆栈跟踪的任何想法?顺便说一句,这是 x86 linux 机器上的 c++ 代码。

谢谢

4

1 回答 1

4

你应该试试

(gdb) 接球

然后 gdb 会在每次抛出异常时触发断点。你会看到一个调用栈。

编辑:这篇文章是调试异常的一大堆技巧:GDB:抛出特定异常类型时如何中断?

于 2012-10-04T18:37:12.120 回答