我正在尝试跟踪std :: exception的来源,在basic_string :: erase中,我在try / catch中直接包装了所有调用erase的位置,并且没有看到任何这些catch块被命中,所以必须从另一个basic_string方法内部调用它。异常似乎是我正在使用的代码中的竞争条件的结果,因此很难重现,有关如何检测和/或从此异常获取堆栈跟踪的任何想法?顺便说一下这是x86 linux盒子上的c ++代码。
谢谢
答案 0 :(得分:4)
你应该试试
(gdb)抓住投掷
然后gdb将在每次抛出异常时触发断点。你会看到一个callstack。
编辑:这篇文章是调试异常的一大堆技巧:GDB: How to break when a specific exception type is thrown?