我可以通过使用 gdb 命令设置捕获点来告诉 gdb 调试器在引发任何 C++ 异常时立即停止
catch throw
但是,有没有办法只在 未捕获 C++ 异常(如在 C# 或 Java 中)处停止?这会让在某些情况下更容易发现错误。
谢谢!
最佳答案
如果一个异常未被捕获,特殊库函数 terminate()
被自动调用。 Terminate 实际上是指向函数的指针,默认值是标准 C 库函数 abort()
.您也许可以在调用 abort()
时设置断点。函数并从那里识别未捕获异常的位置。
break abort
...
run
...
bt
您可以安装自己的 terminate()
函数使用 std::set_terminate()
。您应该能够在 gdb 中的终止函数上设置断点。您也许能够从您的 terminate()
生成堆栈回溯。 函数和此回溯可能有助于识别异常的位置。提供更多详细信息here .
关于c++ - 仅针对未捕获的 C++ 异常的 gdb 捕获点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5718944/