Как ограничить размер файла дампа ядра при его генерации с использованием GDB - PullRequest
7 голосов
/ 12 октября 2011

Я использую встроенное приложение на плате ARM9, где общий объем флэш-памяти составляет всего 180 МБ.Я могу запустить gdb, но когда я

(gdb) generate-core-dump

я получаю сообщение об ошибке

warning: Memory read failed for corefile section, 1048576 bytes at 0x4156c000.
warning: Memory read failed for corefile section, 1048576 bytes at 0x50c00000.
Saved corefile core.5546
The program is running.  Quit anyway (and detach it)? (y or n) [answered Y; input not from terminal]
Tamper Detected
**********OUTSIDE ifelse 0*********
length validation is failed

Я также установил ulimit -c 50000, но все ещедамп ядра превышает этот предел.Когда я проверяю размер файла ls -l, он превышает 300 МБ.В этом случае, как мне ограничить размер дампа ядра?

Ответы [ 3 ]

9 голосов
/ 12 октября 2011

GDB не учитывает 'ulimit -c', только ядро.

Не ясно, запускаете ли вы GDB на целевой плате или на хосте разработки (и используете gdbserver на целевой).Вам, вероятно, следует использовать последнее, что позволит вам собирать полный дамп ядра.

Усеченные дампы ядра в любом случае являются проблемой, так как часто они не содержат именно ту информацию, которая необходима для устранения проблемы.

4 голосов
/ 19 октября 2011

в rc-файле вашей оболочки:

limit coredumpsize 50000             # or whatever limit size you like

, который должен установить предел для всего, включая GDB

Примечание:

Если вы установите его в 0, вы можете убедиться, что ваш домашний каталог не загроможден файлами дампа памяти.

0 голосов
/ 12 октября 2011

Когда вы использовали ulimit -c? Его необходимо использовать перед запуском программы, для которой вы создаете дамп ядра, и в том же сеансе.

...