我为c++使用了一个外部库(xqilla),其结尾是一些uri的分段错误,而有些没有。我对整个C世界有点陌生,我猜想不可能像一个例外一样捕捉到它,但我需要问它是否有可能。当然,任何其他解决办法也将受到欢迎。
那么,是否有一种替代方法来尝试捕获“分段错误”错误?
发布于 2014-12-09 23:02:28
如果您在调试器中运行您的程序,它将告诉您是什么指令导致了错误的内存访问,以便您能够修复它。
或者,您可以通过signal(2)或sigaction(2)添加信号处理程序,但是以这种方式进行调试的能力可能会非常困难。在这样一个错误之后,程序的状态可能是不可预测的。
发布于 2014-12-09 23:16:14
我不太熟悉xquilla,但“分段错误”正式表示程序试图访问未分配给它的内存地址。除了非常罕见的例外(例如,完全模拟不同的计算机),这表明程序中存在灾难性的错误。很可能,通过对输入进行仔细的操作,程序可能会以任意恶意的方式出现错误行为,而不仅仅是崩溃。
你最好的选择是放弃这个库,找一个做同样的工作,但是bug少的库。
如果这不是一个选项,那么您的第二个最佳选择是将库隔离在一个单独的进程中,运行在一个“沙箱”中,防止它在崩溃或被恶意软件接管时破坏任何东西。然后,应用程序的其余部分将检测到崩溃,清理并继续前进。不幸的是,编写这样一个沙箱是困难的,我不知道任何现成的代码,你可以使用。祝好运!
https://stackoverflow.com/questions/27390473
复制相似问题