ulimit -c可用于设置RLIMIT_CORE,并限制进程可能生成的coredump的最大大小.任何较大的coredump都将被截断为此大小.
使用这样一个截断的coredump可以做些什么吗?也许在Linux x86-64以外的平台上,或者使用GDB以外的调试器?
如果没有,为什么POSIX specify this behavior,而不是说,如果超过RLIMIT_CORE,将coredump截断为零字节?
解决方法
Can anything useful be done with such a truncated coredump?
是的,很多东西.
截断的核心转储通常包含堆栈段,因此命令where和thread应用于通常可用的所有位置.通常这就是核心所需的一切.检查局部变量和全局变量的命令也可能有效.
检查堆分配变量的命令可能适用于某些变量,但不一定适用于其他变量.不过,这比没有好多了.