Подтвердить что ты не робот

Файл дампа ядра не генерируется при ошибке сегментации

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

ulimit -c unlimited

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

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

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

4b9b3361

Ответ 1

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

ulimit -c unlimited

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 4

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

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

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