Lor*_*tté 9 linux gcc gdb coredump
我可以配置Linux上的核心转储吗?我想获得类似Windows迷你转储的东西(应用程序崩溃时有关堆栈帧的最小信息).我知道你可以设置核心文件的最大大小ulimit,但这不允许我控制核心内部的内容(即不能保证如果我将限制设置为64kb它会转储最后16页的例如,堆栈).
另外,如果可能的话,我想以编程方式(从代码中)设置它.我查看过所/proc/PID/coredump_filter提到的文件man core,但是对于我的目的来说似乎太粗糙了.
提供一些上下文:我需要微小的核心文件,原因有很多:我需要通过网络收集它们,用于众多(数千)客户端; 此外,这些是具有少量SD卡的嵌入式设备,以及用于网络连接的GPRS调制解调器.所以任何高于〜200k的东西都是不可能的.
编辑:我正在使用运行Linux 2.6.24的嵌入式设备.处理器是PowerPC.不幸的是,目前断路器不支持powerpc-linux ,因此google breakpad不是一个选项
我以两种方式"解决"了这个问题:
strip; 从那里,我将使用add22line从回溯(地址)保存的信息来了解问题发生的位置.这样我只需要存储几个字节.我仍然丢失可能很珍贵的信息(全球和地方变量内容,参数......).我可以很容易地找出要转储的页面,但遗憾的是没有办法为正常的核心转储指定"dump-these-pages"(除非你愿意去修补maydump()内核中的函数).
现在,我很高兴有2个解决方案(它总比没有好......)我的下一个动作是: