【发布时间】:2011-06-15 06:36:10
【问题描述】:
是否有跨平台的方法来处理 CPU 异常,如分段错误或除以零?可以说,我需要调用一些可能不安全的函数(例如从插件文件中),这可能会导致段错误或其他一些我在执行之前无法测试的问题。我知道,C标准库有信号处理函数,但我不知道如何使用它们来处理问题以避免程序终止(我想,我不能只是跳转到有问题的函数执行之前的位置,或者我可以吗?)。 在 windows 下我可以使用 SEH 异常处理程序,但在 Linux 或任何其他操作系统下我不能这样做。使用我自己的异常处理程序来处理这些问题怎么样,Windows/Linux 之间有多大不同?这甚至可能吗(通过汇编程序——让我们说只是在 x86 平台上)?
我主要是出于好奇而询问,我并没有试图解决现有的问题(目前)。 谢谢
【问题讨论】:
-
虽然在发生段错误的情况下您无法真正做任何事情,但我必须承认除以零、上溢和下溢的情况总是让我觉得很奇怪,能够抓住它们会很棒。