在 Ubuntu 中我多次遇到分段错误。什么是分段错误?它何时发生?
答案1
错误说分段故障(或者段错误, 或者错误信息)在 Ubuntu 和其他类 Unix 操作系统中,或者说一般性保护错误在 Windows 中,是指程序试图访问无法访问或禁止程序访问的内存部分。分段错误是一种程序崩溃,即程序异常终止。请参阅 Wikipedia 文章崩溃,内存保护,分段故障,一般性保护错误, 和错误信息以获取更多信息(以及比这里所介绍的对该主题更深入的理解)。
分段错误几乎总是由发生该错误的程序中的错误引起的。我猜您的大多数或所有分段错误都来自同一个应用程序。请提供有关您的机器上发生分段错误的情况以及哪个程序崩溃的更多详细信息。还请提供您收到的错误消息以及出现在它之前的任何其他消息的完整和准确文本。这应该使我们能够针对您的问题提供详细的建议(而不仅仅是关于分段错误是什么的一般信息)。
提供此信息的最佳方式是编辑你的问题以将其包括在内或者,如果您希望这个问题只是关于一般的分段错误,您可以发布一个新问题来询问具体是什么导致了您的分段错误(如果您这样做,请确保在您的新问题中提供所有这些详细信息)。
答案2
段错误是由应用程序中的错误引起的。从技术上讲,这意味着应用程序试图读取或写入不属于它(或不存在)的内存部分。当然,禁止读取或写入他人的内存,当系统(内核)检测到这种情况时,它将强制应用程序退出。
答案3
人们过去通过跟踪汇编代码来调试问题的日子已经一去不复返了。异常结束、华生医生、分段错误。那些绿色的日子已经一去不复返了。
出现分段错误的原因之一是当直接访问内存的代码失败时。当一段代码试图访问不同应用程序的内存段时,就会发生分段错误。内存分配有时会被移动,以允许分配更大的连续内存块。在尝试恢复时,内核会努力将其所有内存信息保存到一个文件中,将 CPU 上运行的所有应用程序的当前状态及其状态(最后一条指令运行)保存到一个文件中,然后就死机了。它还会尝试存储尽可能多的恢复信息,并关闭尽可能多的文件,以便硬盘不会出现断开的链接。
如果经常重现此问题,请调试并修复它。如果无法重现,请双手合十,跪下,拼命祈祷不要“经常”看到它。