C ++如何在程序崩溃之前将某些东西写入日志文件

时间:2013-07-19 14:57:24

标签: c++ logging crash

大家,我试图在互联网上找到解决方案,但我失败了,我需要你的帮助。

我需要编写一个具有以下属性的程序:

如果它崩溃了 - 它应该写崩溃的时间和它发生的行。

我已经为此目的创建了一个特殊的日志记录功能,但是 - 我不知道如何拦截崩溃事件并使其写入日志文件 - 就在发生崩溃之后。

我真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以在析构函数中使用std::uncaught_exception来检查堆栈是否因异常而展开,如果是这种情况则写入一个作用域日志条目。

this thread中,您可能还会收到一些有趣的信息。在涉及异常处理时,它包含许多关于好的和坏的实践的有用信息。

答案 1 :(得分:0)

取决于您希望如何实施它。

让我准确解释一下你试图抓住崩溃的原因。

这些称为未处理的例外。这些被读取传递给C ++异常处理程序,并被视为操作系统级异常处理。这意味着您在何处以及如何捕获错误的实现取决于操作系统。 (非常重要)

我只知道windows所以......这就是你在windows平台上做到这一点的方法。

三种方式。

  • __尝试__except - 基本上就像尝试捕获但更低级别

  • 捕捉信号 - 谷歌这个如果你想在我看来相当无用甚至不打扰解释

  • 我推荐的解决方案是

    SetUnhandledExceptionFilter