减少核心转储大小的最佳方法是什么?
我的问题是我的Linux Mint上没有专门用于此目的的空间。我有大约200 MB,这远远不足以让我的程序生成一个像样的转储。我已经尝试配置coredump过滤器,但只有匿名私有映射转储在大小上做了任何重大改变,但它也使我的转储不可读。我还试图用ulimit限制大小,但唯一的结果是每次都会截断转储。
我的问题是控制核心转储大小的最佳方法是什么? 有没有办法只保留转储的前10-15帧?如果只生成无用的核心文件,那么使用ulimit设置大小限制的用途是什么?
答案 0 :(得分:2)
考虑使用Breakpad:https://code.google.com/p/google-breakpad/ https://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad:
Breakpad是一个库和工具套件,允许您分发 使用编译器提供的调试信息向用户应用程序 删除,记录紧凑的“minidump”文件中的崩溃,将它们发回 您的服务器,并从这些小型转储产生C和C ++堆栈跟踪。 Breakpad也可以根据请求编写minidumps 没有坠毁。
答案 1 :(得分:0)
StackOverflow上似乎有几个相关的答案:
Minimal core dump (stack trace + current frame only)
此链接建议为SIGSEGV设置信号处理程序并以您自己的方式转储核心。
和
Linux core dumps are too large!
此链接建议使用setrlimit来限制转储的大小。