2015-04-21 2 views
1

я сделал следующие изменения:Невозможно изменить имя файла дампа памяти файла

  1. Отредактированный файл /etc/security/limits.conf, так что размер ядра файла «неограниченный». Проверьте его, используя команду #ulimit -c, которая отображается как «неограниченная».

  2. Добавив файл /etc/sysctl.conf согласно следующим образом:
    kernel.core_uses_pid = 1
    kernel.core_pattern = /tmp/%e.core.%p
    fs.suid_dumpable = 2
    Сохраненные изменения с помощью sysctl -p

  3. скомпилирован файл следующим образом:
    $gcc -g pointer.c -o pointeraccess
    результат, успешно скомпилирован

  4. Выполненная файл в 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?

+1

потому что это gdb, сохраняющий основной файл в вашем случае, а не ОС. См. 'Help gcore' в gdb. – mfro

+0

@mfro Спасибо за причину и предложение. Но как мне сделать имя основного файла по мере необходимости? т. е. ** имя_программы.core.pid ** –

+1

Вы попробовали мое предложение? Это скажет вам. – mfro

ответ

1

Обновление ядро-шаблон:

echo "core.%e.%p" > /proc/sys/kernel/core_pattern

% е указывает имя двоичного

С выше рисунком, я был в состоянии иметь ядро ​​сбрасывали, который содержит имя исполняемого файла и PID.

Edit:

Запуск его вне результатов БГД в имени файла в файле дампа. Запустив его с помощью GDB, я полагаю, что gcore берет под свой контроль.

+0

Я уже пробовал это, но без изменений. Я публикую вывод после изменения файла core_pattern. (gdb) Стартовая программа:/Отладка Рабочее пространство/указатель Программный сигнал SIGFPE, исключение арифметики. 0x08048477 в main() at pointeraccess.c: 13 \t i = i/0; (gdb) gcore Сохраненный основной файл core.3262 (gdb) quit Активен отладочный сеанс. \t Низший 1 [процесс 3262] будет убит. Выйти в любом случае? (y или n) y root @ anand-OptiPlex-9010:/Отладка рабочего пространства # cat/proc/sys/kernel/core_pattern core.% e.% p –

+0

Это работает для меня очень хорошо - Linux 2.6/RHEL 6.1 – Prabhu

+1

Попробуйте запустить за пределами GDB и попробовать? – Prabhu

Смежные вопросы