-1

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

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

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

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

我将衷心感谢您的帮助。

4

2 回答 2

1

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

在这个线程中可能还有一些有趣的信息。当涉及到异常处理时,它包含很多关于好的和坏的做法的有用信息。

于 2013-07-19T15:00:38.303 回答
0

取决于你想如何实现它。

让我准确地解释一下你试图在崩溃中捕捉到什么。

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

我只知道windows所以....这里是你可以在windows平台上做的方法。

三种方式。

  • __try __except -- 基本上类似于 try catch 但级别较低

  • 捕捉信号——如果你想用谷歌搜索一下,我认为这没什么用,甚至懒得解释

  • 我推荐的解决方案是

    SetUnhandledExceptionFilter

于 2013-07-19T17:02:49.217 回答