分段错误会导致程序挂起吗
Can a segmentation fault cause a program to hang?
我认为分段错误只会导致崩溃。但是当我运行我的c++程序(在带有mingw编译器的windows上)时,它挂起了。但当我在gdb中运行它时,它会显示分段错误。
这应该比解决相反的问题容易得多:如果它在没有调试器的情况下出现故障,但在有调试器时挂起,那么调试起来可能很棘手。调试器中的任何seg错误都为您提供了一种非常简单的方法(在seg错误后获得回溯)来获得seg错误的直接原因,这通常(但并不总是)直接指示错误。
对于你的标题问题,在你发现seg错误的原因后,你可能会发现具体的情况。但从理论上讲,这是可能的,但不太可能:在某些环境中,一些segfault可以通过try/catch捕获,并且您的代码可以结构化,因此捕获这样的错误会使程序处于无限循环中。更可能的是,导致调试器中seg错误的同一个错误会导致调试器外部的挂起。调试器很可能在稍微不同的虚拟地址加载程序、程序堆栈和/或程序命令行参数。一些随机内存阻塞器可能会为一个加载位置触发挂起,而为另一个位置触发seg故障。或者,一些调试器有意修改未初始化的内存,因此使用未初始化的指针更有可能出错,因为它可能会在没有调试器干扰的情况下导致其他行为(包括挂起)。
相关文章:
- 设置变量时C++程序挂起
- 第一次尝试使用new动态创建结构数组,程序挂起没有错误
- 有时ShowWindow从不调用OnShowWindow,主应用程序挂起
- 访问类成员的成员变量时 cpp 程序挂起
- 为什么线程分离时程序挂起
- 多线程程序挂起条件等待
- 调试Win32应用程序挂起
- 为什么我的多线程应用程序挂起
- 调用 Fortran 函数会使程序挂起
- 使用应用程序验证程序调试时应用程序挂起
- C++文件 I/O - 程序挂起
- MFC应用程序挂起在发出终止信号的线程中
- cvCaptureFromCAM导致程序挂起
- 在QImage上渲染QWebElement时,QT应用程序挂起
- 分段错误会导致程序挂起吗
- C++程序挂起在Visual Studio v.6中
- 通过析构函数删除动态成员会导致程序挂起
- 找出应用程序挂起的位置
- Qt程序挂起(不响应),直到函数结束,然后再次开始工作
- 使用boost::process调用外部程序会导致调用程序挂起(Linux)