繁体   English   中英

任何想法如何使C ++在内核故障时引发异常

[英]Any Idea how to make C++ throw an exception on a kernel fault

或换句话说:如何将内核错误传递给C ++异常?

因为C ++能够抛出大多数编程错误作为例外。 但是为什么不也除零故障呢? 分割错误? 还有其他内核故障?

我了解这些错误是如何在内核中引发并由内核处理的。 我也了解如何借助编译器在C ++中创建和处理异常。 您如何看待两者之间可以连接的点? 在这方面是否有扎实的工作?

在此先感谢您的任何想法或提示。

针对可能重复的标志进行编辑:作为一个类似的问题, 如何捕获分段已经问过关于 capture部分,因此仍然缺少recovery功能。 此外,我正在寻找一种系统的方法来从各种内核异常中恢复,而不仅仅是segv。

再次编辑:我已经解释了为什么这个问题与另一个问题不同。 仍有5人投票关闭。

“内核故障”不是标准术语。 有“内核恐慌”事件。 这些都是内核代码中的错误导致的内核本身的灾难性故障。 您的应用程序与它们无关。

如果我们谈论的是用C ++编写的用户空间程序,则诸如SIGSEGV之类的信号(而不是诸如SIGUSR1之类的信号)是由C ++代码中未定义行为引起的事件。 它可能由内核处理,也可能不由内核处理,这取决于您所使用的操作系统和程序类型。 无论哪种方式,它都不称为内核故障。 就C ++而言,这就是世界末日。 除了可能尝试打印告别消息并退出外,您永远不会尝试处理此类信号。 无法恢复。

在某些非常罕见且依赖于实现的情况下,捕获信号(例如SIGSEGV)可能是有道理的,但没有而且不存在系统的方法。

针对可能重复的标志进行编辑:作为一个类似的问题,如何捕获分段已经问过关于段捕获的部分,因此仍然缺少恢复功能。 此外,我正在寻找一种系统的方法来从各种内核异常中恢复,而不仅仅是segv。

无法以一般方式进行恢复,因此问题类似于:

乍看起来,这似乎是可能的。 但是,许多异常可能表明环境已损坏,无法恢复,只能单独恢复正常执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM