(gdb)gcore gcore警告:内存读取失败

(gdb)gcore gcore警告:内存读取失败,gdb,coredump,Gdb,Coredump,我在Android上使用gdb,在Android shell中: /gdb——pid 29083 ... gcore 警告:corefile段的内存读取失败,0x730c5000处为8192字节。 保存的corefile core.29083 (gdb) 我还设置了ulimit-c50000,但是内核转储仍然超过了这个限制。当我用ls-l检查文件大小时,它超过了300MB。在这种情况下,我应该如何限制核心转储的大小 如何在使用GDB生成核心转储文件时限制其大小?您可以将其用于转储内存。需要根。如

我在Android上使用gdb,在Android shell中: /gdb——pid 29083 ... gcore 警告:corefile段的内存读取失败,0x730c5000处为8192字节。 保存的corefile core.29083 (gdb)

我还设置了ulimit-c50000,但是内核转储仍然超过了这个限制。当我用ls-l检查文件大小时,它超过了300MB。在这种情况下,我应该如何限制核心转储的大小

如何在使用GDB生成核心转储文件时限制其大小?

您可以将其用于转储内存。需要根。如果需要,可以部分转储

内存编辑器选项卡-菜单-内存转储-选择范围和文件夹-按确定-等待“转储结束”

下面是一些视频示例,介绍如何执行此操作:


ulimitshell命令的参数以1024字节块为单位,因此实际设置的限制为50MB。但是,在您的系统上,
/proc/sys/kernel/core\u模式的内容是什么?如果它是一个管道,内核将忽略coredump限制,由被管道传输的程序来遵守该限制。我不知道安卓系统,但在我的Ubuntu系统上,它通过管道连接到apport,而且
apport
显然有一个bug,它将核心限制再乘以1024。@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秒)unlimited file(blocks)unlimited coredump(blocks)0 data(KiB)unlimited stack(KiB)8192 lockedmem(KiB)65536 nofiles(descriptor)1024……
对不起,我完全误解了你的问题,没有注意到关于你使用gdb的gcore命令的部分。我查看了gdb的源代码,从7.7版开始,它在运行gcore命令时不遵守任何核心转储大小限制。