Файл дампа ядра не генерируется из-за ошибки сегментации - PullRequest
18 голосов
/ 16 октября 2010

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

ulimit -c unlimited

для файла ядра, который будет сгенерирован при следующем запуске.

Почему файл дампа основной памяти не генерируется автоматически и почему я должен каждый раз запускать команду ulimit, чтобы генерировать файл ядра при следующем запуске моей программы?

Используемая мною операционная система - Ubuntu 10.10.

Ответы [ 4 ]

19 голосов
/ 16 октября 2010

Вам нужно поместить команду

ulimit -c unlimited

в настройках вашей среды.

Если вы используете bash в качестве оболочки, вам нужно поместить вышеуказанную команду в ~ / .bashrc

15 голосов
/ 01 декабря 2010

Вы также можете попробовать отредактировать файл /etc/security/limits.conf вместо добавления ulimit -c unlimited к ~/.bashrc.

limits.conf - это "правильное" место, где можно указать подробности дампа ядра в большинстве дистрибутивов Linux.

9 голосов
/ 16 октября 2010

Это потому, что по умолчанию ваш дистрибутив ограничивает размер файла ядра до 0 блоков.Упомянутая вами команда ulimit увеличивает этот предел до бесконечности.

Я не знаю об Ubuntu, но большинство дистрибутивов имеют файл / etc / limit с системными настройками по умолчанию для ограничений ресурсов.

1 голос
/ 05 августа 2014

Ошибка сегментации вызвана несоответствующими значениями переменных пути.В моей системе пользователь имеет значение sidd@sidd-Lenovo-G460, а добавленное содержимое выглядит следующим образом.

PATH=$PATH:/home/sidd/ns-allinone-2.35/bin:/home/sidd/ns-allinone-2.35/tcl8.5.10/unix:/home/sidd/ns-allinone-2.35/tk8.5.10/unix

LD_LIBRARY_PATH=/home/sidd/ns-allinone-2.35/otcl-1.14:/home/sidd/ns-allinone-2.35/lib

TCL_LIBRARY=/home/sidd/ns-allinone-2.35/tcl8.5.10/library

Пожалуйста, обратитесь к этому сообщению в блоге (ОЧЕНЬ ВАЖНО).

...