(gdb) gcore предупреждение gcore: ошибка чтения памяти

Я использую gdb на Andorid в оболочке Android: ./gdb --pid 29083 ... предупреждение gcore: Ошибка чтения памяти для раздела corefile, 8192 байта по адресу 0x730c5000. Сохраненный corefile core.29083 (gdb)

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

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


person f0rest    schedule 20.07.2014    source источник
comment
Аргумент команды оболочки ulimit находится в блоках по 1024 байта, поэтому вы фактически устанавливаете ограничение в 50 МБ. Но каково содержимое /proc/sys/kernel/core_pattern в вашей системе? Если это конвейер, ядро ​​​​игнорирует предел дампа ядра, и это зависит от программы, в которую передается конвейер, чтобы соблюдать ограничение. Я не знаю насчет Android, но в моей системе Ubuntu он передается на apport, а apport, по-видимому, имеет ошибку, из-за которой предел ядра умножается еще на 1024.   -  person Mark Plotnick    schedule 21.07.2014
comment
@MarkPlotnick root@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
comment
Извините, я совершенно неправильно понял ваш вопрос и не заметил часть о том, что вы используете команду gdb gcore. Я просмотрел исходный код gdb, и, начиная с версии 7.7, он не соблюдает ограничения на размер дампа ядра при выполнении своей команды gcore.   -  person Mark Plotnick    schedule 22.07.2014


Ответы (1)


Вы можете использовать GameGuardian для создания дампа памяти. Нужен рут. При необходимости можно частично сбросить.

Вкладка Редактор памяти - меню - дамп памяти - выбираем диапазон и папку - нажимаем ок - ждем тоста "Конец дампа".

Вот несколько видео примеров, как это сделать:

person Enyby    schedule 18.04.2017