是否有一种跨平台的方式来处理cpu异常,如分段错误或除零?可以说,我需要调用一些可能不安全的函数(例如来自插件文件),这可能会导致段错误,或者在执行之前我无法测试的其他一些问题.我知道,C标准库有信号处理功能,但我不知道如何使用它们来处理问题以避免程序终止(我猜,我不能只是在有问题的函数执行之前跳转到该位置,或者我可以?).
在 Windows下我可以使用SEH异常处理程序,但我不能在 Linux或任何其他操作系统下执行此操作.如何使用我自己的异常处理程序来处理这些问题,Windows / Linux之间的差异有多大?这是否可能(通过汇编程序 – 让我们说在x86平台上)?
在 Windows下我可以使用SEH异常处理程序,但我不能在 Linux或任何其他操作系统下执行此操作.如何使用我自己的异常处理程序来处理这些问题,Windows / Linux之间的差异有多大?这是否可能(通过汇编程序 – 让我们说在x86平台上)?
我主要是出于好奇,我不是想解决现有的问题.
谢谢
解决方法
libsigsegv是一个用于处理分段错误和堆栈溢出的跨平台库.但是,在绝大多数情况下,当您检测到分段错误时,正确的做法是尽可能快地终止执行,而不是尝试从中恢复.段错误通常表示存在错误或内存损坏,一旦内存损坏,几乎不可能从中恢复.