分段错误会导致程序挂起吗?

时间:2015-12-05 17:02:21

标签: c++

我认为分段错误只会导致崩溃。但是当我运行我的c ++程序时(在带有mingw编译器的Windows上)它会挂起。但是当我在gdb中运行时,它表示分段错误。

1 个答案:

答案 0 :(得分:0)

这应该比反向更容易解决:如果它在没有调试器的情况下出现故障但是与调试器挂起,则调试起来可能很棘手。任何使用调试器进行故障排除的方法都会为您提供一种非常简单的方法(在出现故障后获得回溯)以获得seg故障的直接原因,这通常(但不总是)直接指示错误。

对于标题问题,您可能会在发现seg故障原因后发现具体情况。但从理论上讲,它是可能但不太可能:在某些环境中,某些段错误可以通过try / catch捕获,并且您的代码可以构造成如此捕获这样的错误会使程序处于无限循环中。更有可能导致调试器中出现seg错误的相同错误导致调试器外部挂起。可能调试器将程序,其堆栈和/或命令行参数加载到稍微不同的虚拟地址。一些随机内存崩溃可能会触发一个负载位置的挂起并为另一个负载位置发生故障。或者,一些调试器故意修改未初始化的内存,因此在没有调试器干扰的情况下,使用未初始化的指针更有可能导致错误,因为它可能导致其他行为(包括挂起)。