Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试跟踪 std::exception 的来源,在 basic_string::erase 中,我将我直接调用擦除的所有位置包装在 try/catch 中,并且没有看到任何这些 catch 块被击中,所以它必须从另一个 basic_string 方法内部调用。该异常似乎是我正在使用的代码中竞争条件的结果,因此很难重现,关于我如何检测和/或从此异常获取堆栈跟踪的任何想法?顺便说一句,这是 x86 linux 机器上的 c++ 代码。
谢谢
你应该试试
(gdb) 接球
然后 gdb 会在每次抛出异常时触发断点。你会看到一个调用栈。
编辑:这篇文章是调试异常的一大堆技巧:GDB:抛出特定异常类型时如何中断?