я сделал следующие изменения:Невозможно изменить имя файла дампа памяти файла
Отредактированный файл
/etc/security/limits.conf
, так что размер ядра файла «неограниченный». Проверьте его, используя команду#ulimit -c
, которая отображается как «неограниченная».Добавив файл
/etc/sysctl.conf
согласно следующим образом:
kernel.core_uses_pid = 1
kernel.core_pattern = /tmp/%e.core.%p
fs.suid_dumpable = 2
Сохраненные изменения с помощьюsysctl -p
скомпилирован файл следующим образом:
$gcc -g pointer.c -o pointeraccess
результат, успешно скомпилированВыполненная файл в GDB следующим образом:
$gdb pointeraccess
После того, как арифметический исключение, он выводит следующее:
(GDB) запустить
Запуск программы:/media/anand/d258641a-8cc6-4fcf-96e4-
ce7a147cb34e/Imp ortant/Debugging Workspace/pointeraccess
Запрограммированный сигнал SIGFPE, исключение арифметики.
0x08048477 в главной() в pointeraccess.c: 13
13 I = I/0;
(GDB) gcore
Сохраненный core.1880 Основной файл
Мой вопрос: Почему имя файла core.pid
вместо program_name.core.pid
?
потому что это gdb, сохраняющий основной файл в вашем случае, а не ОС. См. 'Help gcore' в gdb. – mfro
@mfro Спасибо за причину и предложение. Но как мне сделать имя основного файла по мере необходимости? т. е. ** имя_программы.core.pid ** –
Вы попробовали мое предложение? Это скажет вам. – mfro