Я использую gdb на Andorid в оболочке Android: ./gdb --pid 29083 ... предупреждение gcore: Ошибка чтения памяти для раздела corefile, 8192 байта по адресу 0x730c5000. Сохраненный corefile core.29083 (gdb)
Я также установил ulimit -c 50000, но дамп ядра все равно превышает этот предел. Когда я делаю ls -l, чтобы проверить размер файла, он превышает 300 МБ. В этом случае, как мне ограничить размер дампа ядра?
Как ограничить размер файла дампа ядра при его создании с помощью GDB?
ulimit
находится в блоках по 1024 байта, поэтому вы фактически устанавливаете ограничение в 50 МБ. Но каково содержимое/proc/sys/kernel/core_pattern
в вашей системе? Если это конвейер, ядро игнорирует предел дампа ядра, и это зависит от программы, в которую передается конвейер, чтобы соблюдать ограничение. Я не знаю насчет Android, но в моей системе Ubuntu он передается наapport
, аapport
, по-видимому, имеет ошибку, из-за которой предел ядра умножается еще на 1024. - person Mark Plotnick   schedule 21.07.2014root@mako:/proc/sys/kernel # cat core_pipe_limit cat core_pipe_limit 0
============================================== =============root@mako:/proc/sys/kernel # cat core_pattern cat core_pattern core
==================================== ========================root@mako:/data/tools/gdb/bin # ulimit -a ulimit -a time(cpu-seconds) unlimited file(blocks) unlimited coredump(blocks) 0 data(KiB) unlimited stack(KiB) 8192 lockedmem(KiB) 65536 nofiles(descriptors) 1024 .......
- person f0rest   schedule 21.07.2014