Что такое ошибка сегментации?

В Ubuntu я много раз сталкивался с ошибкой сегментации. Что такое ошибка сегментации и когда она возникает?

26
задан 9 July 2012 в 18:20

3 ответа

Ошибка сегментации вызвана ошибкой в ​​приложении. Технически это означает, что приложение пытается прочитать или записать часть памяти, которая ему не принадлежит (или не существует). Конечно, запрещено читать или записывать в чужую память, и когда система (ядро) обнаружит это, это приведет к закрытию приложения.

0
ответ дан 9 July 2012 в 18:20

Прошли те времена, когда люди привыкли отслеживать ассемблерный код и устранять проблемы. Абендс, доктор Ватсон, Ошибка сегментации. Те зеленые дни прошли.

Одна из причин ошибки сегментации - сбой кода, который имеет прямой доступ к памяти. Когда часть кода пытается получить доступ к сегменту памяти другого приложения, возникает ошибка сегментации. Выделение памяти иногда перемещается, чтобы позволить выделять большие непрерывные блоки памяти. В то время как оно пытается восстановиться, ядро ​​изо всех сил пытается сохранить всю информацию о своей памяти в файл, текущее состояние всех приложений, запущенных на процессоре, и их состояние (последний запуск инструкции) в файл и просто умереть. Он также попытается сохранить как можно больше информации для восстановления и закрыть как можно больше файлов, чтобы на жестком диске не было битых ссылок.

Отладьте его и исправьте, если вы можете часто его воспроизводить. Если вы не можете воспроизвести это, просто возьмите свои руки, встаньте на колени и молитесь, как черт, чтобы вы не видели это «регулярно».

0
ответ дан 9 July 2012 в 18:20

Ошибка из-за ошибки сегментации (или segfault , или SIGSEGV ) в Ubuntu и других Unix-подобных операционных системах, или из-за общей защиты Ошибка в Windows - это когда программа пытается получить доступ к той части памяти, к которой нет доступа, или к которой программе запрещен доступ. Ошибка сегментации - это своего рода сбой программы, то есть ненормальное завершение программы. См. Статьи Википедии о сбоях , защиты памяти , сбое сегментации , сбое общей защиты и SIGSEGV для больше информации (и более текстурированное понимание темы, чем представлено здесь).

Ошибка сегментации почти всегда возникает из-за ошибки в программе, в которой она возникает. Я предполагаю, что большинство или все ваши ошибки сегментации происходят из одного и того же приложения. Пожалуйста, предоставьте более подробную информацию об обстоятельствах, при которых на вашей машине происходят ошибки сегментации, и о том, какая программа дает сбой. Также предоставьте полный и точный текст сообщения об ошибке, которое вы получаете, и любых других сообщений, которые появляются перед ним. Это должно позволить нам предоставить подробный совет, относящийся к вашей проблеме (а не просто общую информацию о том, что такое ошибка сегментации).

Лучший способ предоставить вам эту информацию - отредактировать свой вопрос, включив ее . В качестве альтернативы, если вы хотите, чтобы этот вопрос касался только ошибок сегментации в целом, вы можете опубликовать новый вопрос, чтобы спросить о том, что конкретно вызывает ваши ошибки сегментации (если вы это сделаете, обязательно предоставьте все эти детали в своем новом вопросе) .

0
ответ дан 9 July 2012 в 18:20

Другие вопросы по тегам:

Похожие вопросы: