Как ограничить размер файла дампа ядра при его создании с помощью 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 ? Он должен использоваться перед запуском программы, для которой вы создаете дамп ядра, и внутри того же сеанса.