Ответ 1
Вам нужно поместить команду
ulimit -c unlimited
в настройках вашей среды.
Если вы используете bash как свою оболочку, вам нужно поместить указанную выше команду в ~/.bashrc
Я пытаюсь отладить ошибку сегментации, вызванную моей программой на C, используя gdb
. Когда я запускаю свою программу, файл дампа ядра не генерируется автоматически, и мне нужно запустить команду
ulimit -c unlimited
для файла ядра, который будет сгенерирован при следующем запуске.
Почему файл дампа ядра не генерируется автоматически и почему мне нужно каждый раз запускать команду ulimit
для создания основного файла при следующем запуске моей программы?
В операционной системе я использую Ubuntu 10.10.
Вам нужно поместить команду
ulimit -c unlimited
в настройках вашей среды.
Если вы используете bash как свою оболочку, вам нужно поместить указанную выше команду в ~/.bashrc
Вы также можете попробовать отредактировать файл /etc/security/limits.conf
вместо добавления ulimit -c unlimited
в ~/.bashrc
.
limits.conf
- это "правильное" место, где указать основные данные дампа в большинстве дистрибутивов Linux.
Это потому, что по умолчанию ваш дистрибутив ограничивает размер файла ядра до 0 блоков. Команда ulimit
, которую вы указали, увеличивает ограничение до бесконечности.
Я не знаю о Ubuntu, но у большинства дистрибутивов есть файл /etc/limits с системными значениями по умолчанию для ограничений ресурсов.
Ошибка сегментации связана с нерелевантными значениями для переменных пути. В моей системе пользователь [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
Пожалуйста, обратитесь этот пост в блоге (ОЧЕНЬ ВАЖНО).