Debugging gdb警告:“;“内存读取失败”;及;无法关闭核心:文件被截断";

Debugging gdb警告:“;“内存读取失败”;及;无法关闭核心:文件被截断";,debugging,gdb,coredump,core-file,Debugging,Gdb,Coredump,Core File,我不想用gdb创建一个核心转储文件。当我在gdb会话期间发出命令generate core file时,会导致以下警告: 警告:corefile段的内存读取失败,0x400317f0处为1048576字节。 警告:无法关闭“core.42000”:文件被截断 保存的corefile core.42000 然后,该文件的大小始终为210K。因此,似乎有一些限制限制gdb生成大于210K的核心文件 我还使用bash设置了ulimit-c unlimited,并使用ulimit-a对其进行控制,从而使

我不想用gdb创建一个核心转储文件。当我在gdb会话期间发出命令
generate core file
时,会导致以下警告:

警告:corefile段的内存读取失败,0x400317f0处为1048576字节。
警告:无法关闭“core.42000”:文件被截断
保存的corefile core.42000

然后,该文件的大小始终为210K。因此,似乎有一些限制限制gdb生成大于210K的核心文件

我还使用bash设置了
ulimit-c unlimited
,并使用
ulimit-a
对其进行控制,从而使
核心文件大小(块,-c)不受限制
。 但gdb似乎忽略了这一点,因为我得到了一个被截断的核心文件。 然后,在文件/etc/security/limits.conf中,我将硬核和软核的值也设置为unlimited。但一切都没有改变

有人知道我如何在我的系统(Ubuntu 16.04 LTS)上创建更大(>210K)的核心文件吗


非常感谢并致以最诚挚的问候。

您能否运行
(gdb)info proc mappings
查看0x400317f0周围的内存映射到了什么?可能它属于程序不再有权访问的文件,或者属于其驱动程序不支持ptrace访问的设备。@MarkPlotnick当我运行
(gdb)info proc mappings
时,我得到
警告:无法打开/proc file'/proc//maps'
,我无法让gdb打开该文件。但是当手动打开它并搜索gdb无法读取核心文件部分的内存地址时,我发现文件以更大的地址开始和结束,这意味着相关的内存地址不在这个范围内。还是我解释错了什么?/proc//maps文件如下所示:@MarkPlotnick
5617c31e3000-5617c382e000 r-xp 00000000 fc:02 9467963/usr/bin/qemu-system-x86645617c3a2d000-5617c3b81000 r--p 0064a000 fc:02 9467963/usr/bin/qemu-system-x86645617c3b81000-5617c3bf5000 rw-p 0079e000 fc:02 9467963/usr/bin/qemu-system-x86_64 5617c3bf5000-5617c4086000 rw-p 00000000:00 0 5617c5ab5000-5617c76ec000 rw-p 00000000:00[heap]7f3240000-7f3240000 rw-p 00000000:00[…]
噢,对不起,我刚刚看到这里的文件内容格式非常糟糕。当gdb调试qemu进程(gcore遇到问题的同一个进程)时,您能运行info proc mappings命令吗?在程序的不同运行期间,地址可能会不同,尤其是在gdb之外启动时(因为gdb禁用ASLR)。gdb调试此qemu进程时,我已经运行了info proc mappings命令。你知道为什么gdb不能打开这个文件吗?或者有没有其他方法可以找到正确的地址?