潘特希奥斯抓住了塞格弗尔吗? 我在C++中使用PANEIOS日志库,没有发现PANTIOS可以捕获Sebug,然后强制在退出之前打印缓冲区数据。

潘特希奥斯抓住了塞格弗尔吗? 我在C++中使用PANEIOS日志库,没有发现PANTIOS可以捕获Sebug,然后强制在退出之前打印缓冲区数据。,c++,segmentation-fault,pantheios,C++,Segmentation Fault,Pantheios,我可以捕获segfault,但我没有找到最终打印包含日志的缓冲区的方法 Rgds,我敢肯定,对于一个库来说,尝试注册一个信号处理器是不好的做法,所以如果pantheios这样做,我会感到惊讶 如果你认为你能有效地处理这个信号,你应该自己捕捉它。您是否确定有一个待清空的日志缓冲区,并且不是试图记录某些数据的行为首先触发了SEGFULT?我担心这里有一个可怕的误解:您了解SEGFULT的原因吗 在一般情况下,segfault是由空解引用引起的。它很容易修复,因为问题通常很容易发现 然而,在恶劣的情况

我可以捕获segfault,但我没有找到最终打印包含日志的缓冲区的方法


Rgds,

我敢肯定,对于一个库来说,尝试注册一个信号处理器是不好的做法,所以如果pantheios这样做,我会感到惊讶


如果你认为你能有效地处理这个信号,你应该自己捕捉它。您是否确定有一个待清空的日志缓冲区,并且不是试图记录某些数据的行为首先触发了SEGFULT?

我担心这里有一个可怕的误解:您了解SEGFULT的原因吗

在一般情况下,segfault是由空解引用引起的。它很容易修复,因为问题通常很容易发现

然而,在恶劣的情况下,segfault是由内存损坏触发的,内存损坏会在需要常规指针的地方写入垃圾,并导致您尝试访问不应该具有的内存

现在,假设您为segfault注册了一个处理程序。显然,你无法区分你是在琐碎的情况下还是在恶劣的情况下,所以你应该假设内存已损坏,你不能信任它

是什么让您认为日志消息不会被破坏

任何理智的库都不应尝试处理segfault


在segfault的情况下,将内存状态转储到核心转储文件中,然后硬崩溃。如果你不能信任内存,你无论如何也不能采取任何有意义的行动。

我还没有segfault,但我的问题是,如果在我的程序中,我有segfault,在segfault之前记录的信息是否会保留在缓冲区中?如果pantheios使用缓冲区。。。但是我在pantheios文档中没有找到任何打印缓冲区的信息。啊,所以你不知道你是否真的有问题?也许您应该尝试编写一个简单的测试用例,在其中生成一条日志消息,然后取消对空指针的引用,看看会发生什么。