我需要编写一个具有以下属性的程序:
如果它崩溃了 - 它应该写崩溃的时间和它发生的行。
我已经为此目的创建了一个特殊的日志记录功能,但是 - 我不知道如何拦截崩溃事件并使其写入日志文件 - 就在发生崩溃之后。
我真的很感谢你的帮助。
答案 0 :(得分:1)
您可以在析构函数中使用std::uncaught_exception来检查堆栈是否因异常而展开,如果是这种情况则写入一个作用域日志条目。
在this thread中,您可能还会收到一些有趣的信息。在涉及异常处理时,它包含许多关于好的和坏的实践的有用信息。
答案 1 :(得分:0)
取决于您希望如何实施它。
让我准确解释一下你试图抓住崩溃的原因。
这些称为未处理的例外。这些被读取传递给C ++异常处理程序,并被视为操作系统级异常处理。这意味着您在何处以及如何捕获错误的实现取决于操作系统。 (非常重要)
我只知道windows所以......这就是你在windows平台上做到这一点的方法。
三种方式。
__尝试__except - 基本上就像尝试捕获但更低级别
捕捉信号 - 谷歌这个如果你想在我看来相当无用甚至不打扰解释
我推荐的解决方案是