通过使用gdb命令设置catchpoint,我可以告诉gdb调试器在引发任何C ++异常后立即停止
catch throw
但是,有没有办法只停留未捕获的 C ++异常(比如C#或Java)?这样可以在某些情况下更容易找到错误。
谢谢!
答案 0 :(得分:12)
如果未捕获异常,则会自动调用特殊库函数 terminate()
。 Terminate实际上是一个指向函数的指针,默认值是标准C库函数abort()
。您可以能够在调用abort()
函数时设置断点,并从那里识别未捕获的异常的位置。
break abort
...
run
...
bt
您可以使用 terminate()
安装自己的 std::set_terminate()
功能。您应该能够在gdb中的终止函数上设置断点。您可能能够从 terminate()
函数生成堆栈回溯,此回溯可能有助于识别异常的位置。其他详细信息仅提供here。