Как ограничить размер файла дампа ядра при его создании с помощью GDB

я запускаю встроенное приложение на плате ARM9, где общий размер вспышки составляет только 180MB. Я умею бегать 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 ответов


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

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

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


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

limit coredumpsize 50000             # or whatever limit size you like

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

Примечание:

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


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