Основная ошибка дампа и сегментации - PullRequest
2 голосов
/ 06 октября 2009

Я хочу знать точную разницу между ошибкой сегментации и дампом ядра. Я согласен, что они зависят от операционной системы и, конечно, возникают из-за неправильного управления памятью. Но, пожалуйста, придумайте некоторые общие подходы, которые необходимо соблюдать, чтобы предотвратить их?

Сачин Чоурасия

Ответы [ 2 ]

4 голосов
/ 06 октября 2009

Файл ядра - это образ памяти сбойного процесса. С помощью отладчика вы можете узнать возможные причины сбоя. Если вы не знаете, что делать с основным файлом (кроме rm core), вы можете попросить не создавать их с помощью limit coredumpsize 0.

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

Есть разные причины ошибки сегментации. вот неполный список:

  • доступ к данным через неинициализированный указатель
  • доступ к памяти malloc, которая была свободна
  • доступ к элементам массива за пределами размера массива
  • ...

Существуют инструменты для обнаружения такого плохого доступа к памяти. очистить или пух являются примерами из них.

3 голосов
/ 06 октября 2009

A ошибка сегментации являются результатом недопустимого доступа к памяти и вызывают сигнал SIGINT, который обычно вызывает завершение приложения.

A core dump - это файл, который обычно записывается при сбое приложения после, например, ошибка сегментации в том, что разработчик может проанализировать состояние приложения во время сбоя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...