【发布时间】:2013-05-10 03:10:28
【问题描述】:
最近我注意到我的应用程序生成的核心转储的大小有所增加。最初,它们的大小只有 5MB 左右,包含大约 5 个堆栈帧,现在我有超过 2GB 的核心转储,其中包含的信息与较小的转储没有什么不同。
有什么方法可以控制生成的核心转储的大小?它们不应该至少小于应用程序二进制文件本身吗?
二进制文件以这种方式编译:
- 在带有调试的发布模式下编译 符号(即 -g 编译器选项 GCC)。
- 调试符号被复制到一个
单独的文件并从
二进制。 - 添加了 GNU 调试符号链接 到二进制文件。
在应用程序开始时,有一个对setrlimit 的调用,它将核心限制设置为无穷大——这是问题所在吗?
【问题讨论】:
-
停止喂你的应用墨西哥卷饼。