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

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

ulimit -c unlimited

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

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

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


person Tim    schedule 16.10.2010    source источник


Ответы (4)


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

ulimit -c unlimited

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

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

person Michalis Giannakidis    schedule 16.10.2010

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

limits.conf - это «правильное» место для указания деталей дампа ядра в большинстве дистрибутивов Linux.

person user389238    schedule 30.11.2010

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

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

person ninjalj    schedule 16.10.2010

Ошибка сегментации связана с несоответствующими значениями переменных пути. В моей системе пользователь 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

См. это сообщение в блоге ( ОЧЕНЬ ВАЖНО).

person user3910369    schedule 05.08.2014