我正在将 Visual C++ 应用程序移植到 GCC(应该建立在 MingW 和 Linux 上)。
现有代码__try { ... } __except(1) { ... }
在一些地方使用块,因此几乎没有什么(可能是内存不足类型错误?)会使程序退出而不做一些最小的日志记录。
用 GCC 做类似的事情有哪些选择?
编辑:感谢 Visual Studio 中指向 /EH 选项的指针,我现在需要一些关于如何在 Linux 上处理信号的示例。我从 2002 年发现了这条消息。
除了我应该注意的其他信号SIGFPE
吗SIGSEVG
?(主要关心那些可能从我做错事中提出的问题)
赏金信息:我希望我的应用程序能够在退出之前自行记录尽可能多的错误情况。
我可能会收到哪些信号,哪些信号通常不可能在之后记录错误消息?(内存不足,还有什么?)
我如何以一种可移植的方式处理异常和(最重要的)信号,使代码至少在 Linux 和 MingW 上运行相同。#ifdef 没问题。
我不只是有一个记录失败的包装进程的原因是,出于性能原因,我保存将一些数据写入磁盘直到最后一分钟,所以如果出现问题,我想尽一切可能尝试在之前写出数据退出。