我可以配置Linux内核转储中的内容吗?我想获得类似Windows的迷你转储(应用程序崩溃时有关堆栈帧的最小信息)。我知道您可以使用ulimit
为核心文件设置最大大小,但这不允许我控制内核内部的内容(例如,如果我将限制设置为64 of,它将转储堆栈的最后16页)。
此外,如果可能的话,我希望以编程的方式(从代码中)设置它。我看过man core
提到的man core
文件,但就我的目的而言,它的粒度太粗了。
为了提供一些背景:我需要小型核心文件,原因有很多:我需要通过网络收集它们,为众多(数千)客户端收集它们;此外,这些是带有小SD卡的嵌入式设备,以及用于网络连接的GPRS调制解调器。因此,任何超过200 K的东西都是不可能的。
编辑:我正在开发一个运行Linux2.6.24的嵌入式设备。处理器是PowerPC。不幸的是,powerpc-linux目前还不支持断板,所以google坏板不是一种选择。
发布于 2013-04-12 13:07:21
我用两种方式“解决”了这个问题:
strip
将其存储在安全的地方;从那里,我将使用add22line
和保存自backtrace (地址)的信息来了解问题发生的位置。这样,我只需要存储几个字节。我仍然丢失可能是宝贵的信息(全局和局部变量内容,params.)。我可以很容易地找到要转储的页面,但不幸的是,没有办法为普通的核心转储指定一个“转储-这些页面”(除非您愿意去修补内核中的maydump()
函数)。
现在,我很满意有两个解决方案(这总比什么都没有好。)我的下一步将是:
https://stackoverflow.com/questions/8836459
复制相似问题