找到std :: vector.at()抛出std :: out_of_range的位置

时间:2011-07-06 22:06:44

标签: c++ exception exception-handling gdb eclipse-cdt

通常我会让它处理不当,调试器(gdb,Eclipse CDT)会显示调用堆栈。不幸的是,代码被第三方库调用,它吸收了所有异常。我可以在第三方库之前捕获异常但是我看不到调用堆栈(stack-unwinding?)。

如何判断抛出异常的位置?

2 个答案:

答案 0 :(得分:5)

catchpoints会有帮助吗?只要在gdb中输入catch throw命令,就可以在抛出异常时中断。在Eclipse中,您可以通过gdb控制台执行此操作。请参阅this question

答案 1 :(得分:4)

您可以在异常对象的构造函数中放置断点。由于这是在抛出异常之前发生的,因此您可以很好地了解调用代码。