2010-05-04 2 views
7

Недавно я заметил увеличение размера дампов ядра, созданных моим приложением. Первоначально они были размером всего около 5 МБ и содержали около 5 кадров стека, и теперь у меня есть дампы ядра> 2 ГБ, а содержащаяся в них информация ничем не отличается от небольших дампов.Сливы ядра Linux слишком велики!

Есть ли способ контролировать размер сгенерированных сердечников? Разве они не должны быть, по крайней мере, меньше самого бинарного приложения?

Бинарные составляются таким образом:

  • Составитель в режиме выпуска с отлаживать символами (т.е. -g параметр компилятора в GCC).
  • Отладочные символы копируются на отдельный файл
    и удаляются из двоичного файла
    .
  • Ссылка на символы отладки GNU добавлена ​​ в двоичную.

В начале приложения есть звонок setrlimit, который устанавливает предельный предел на бесконечность. Это проблема?

+1

Остановить питание вашего burritos приложения. – Pierreten

ответ

1

Да, setrlimit - это то, почему вы получаете большие файлы ядра. Вы можете установить ограничение на размер ядра в большинстве оболочек, например. в bash вы можете сделать ulimit -c 5000000. Однако ваш вызов setrlimit переопределит это.

/etc/security/limits.conf можно также использовать для установки верхних границ на размер ядра.

+2

Я думаю, что этот ответ вводит в заблуждение, setrlimit просто убедится, что дамп ядра не больше, чем указано, обрезая его. Дамп ядра - это размер, из-за памяти, которую приложение выделило или сопоставил. – Peter

11

Да - не выделяют так много памяти :-)

Ядро дамп содержит полное изображение адресного пространства вашего приложения, включая код, стек и куча (malloc'd объектов и т.д.)

Если ваши дампы ядра составляют> 2 ГБ, это означает, что в какой-то момент вы выделили столько памяти.

Вы можете использовать setrlimit, чтобы установить нижний предел размера дампа ядра, рискуя оказаться с дампом ядра, который невозможно декодировать (потому что он неполный).

+2

Если приложение выходит из строя, в то время как у него большой файл, сопоставленный с 'mmap', вы также получите этот файл, включенный в ваш дамп. – caf

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