首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用截断的核心可以做任何有用的事情吗?

用截断的核心可以做任何有用的事情吗?
EN

Unix & Linux用户
提问于 2014-09-13 08:19:42
回答 1查看 6.9K关注 0票数 8

我们有用Python、Java和C++混合编写的进程,这些进程不时地被核心转储。它们在运行时按需要以块的形式分配更多内存,并且当它们在4G上分配提示时(我猜malloc()的返回值没有被检查),它们就会崩溃。

但是,根据GDB的说法,产生的核心转储是被截断的,它们在操作系统中的大小是无限的,在磁盘上它们的大小在2-3.8G之间。

GDB观察到,这个大小与它所期望的不匹配(大概包括失败的alloc?)放弃了--但在3.8G的数据中,肯定有什么值得关注的东西吗?可能甚至整个堆栈,我需要一个回溯!

我如何说服GDB至少尝试一下,或者是否有一个替代工具可以从截断的核心中提取某些内容?

EN

回答 1

Unix & Linux用户

发布于 2014-09-14 03:08:05

Studio 12网站上的这段话似乎意味着它们基本上是无用的。

节选- http://docs.oracle.com/cd/E19205-01/819-5257/blabs/index.html

如果在加载核心文件时遇到问题,将截断核心文件,请检查是否有截断的核心文件。如果在创建核心文件时将核心文件的最大允许大小设置得太低,则dbx无法读取结果被截断的核心文件。在core中,可以使用limit命令设置允许的最大核心文件大小(请参见限制(1)手册页)。在Bourne和Korn中,使用ulimit命令(请参见限制(1)手册页)。您可以更改shell启动文件中对核心文件大小的限制,重新创建启动文件,然后重新运行生成核心文件的程序以生成完整的核心文件。如果核心文件不完整,并且缺少堆栈段,则堆栈跟踪信息不可用。如果缺少运行时链接器信息,则加载对象列表不可用。在本例中,您将收到一条关于librtld_db.so未被初始化的错误消息。如果缺少lwp列表,则没有线程信息、lwp信息或堆栈跟踪信息是available.If --运行where命令时,您会得到一个错误,说明程序不是“活动的”。

票数 7
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/155389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档