首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以绕过或捕捉“分段故障”?

是否可以绕过或捕捉“分段故障”?
EN

Stack Overflow用户
提问于 2014-12-09 22:59:44
回答 2查看 2.7K关注 0票数 2

我为c++使用了一个外部库(xqilla),其结尾是一些uri的分段错误,而有些没有。我对整个C世界有点陌生,我猜想不可能像一个例外一样捕捉到它,但我需要问它是否有可能。当然,任何其他解决办法也将受到欢迎。

那么,是否有一种替代方法来尝试捕获“分段错误”错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-09 23:02:28

如果您在调试器中运行您的程序,它将告诉您是什么指令导致了错误的内存访问,以便您能够修复它。

或者,您可以通过signal(2)sigaction(2)添加信号处理程序,但是以这种方式进行调试的能力可能会非常困难。在这样一个错误之后,程序的状态可能是不可预测的。

票数 7
EN

Stack Overflow用户

发布于 2014-12-09 23:16:14

我不太熟悉xquilla,但“分段错误”正式表示程序试图访问未分配给它的内存地址。除了非常罕见的例外(例如,完全模拟不同的计算机),这表明程序中存在灾难性的错误。很可能,通过对输入进行仔细的操作,程序可能会以任意恶意的方式出现错误行为,而不仅仅是崩溃。

你最好的选择是放弃这个库,找一个做同样的工作,但是bug少的库。

如果这不是一个选项,那么您的第二个最佳选择是将库隔离在一个单独的进程中,运行在一个“沙箱”中,防止它在崩溃或被恶意软件接管时破坏任何东西。然后,应用程序的其余部分将检测到崩溃,清理并继续前进。不幸的是,编写这样一个沙箱是困难的,我不知道任何现成的代码,你可以使用。祝好运!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27390473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档