近期我注意到我的应用生成的核心转储文件越来越大。最初,它们的大小只有约5MB,并包含约5个堆栈帧,现在我有超过2GB的转储文件,其中包含的信息与较小的转储文件没有区别。
有没有办法控制生成的核心转储文件的大小?它们难道不应该至少比应用程序本身小吗?
这些二进制文件是这样编译的:
- 以发布模式编译,附带调试符号(即,在GCC中使用-g编译器选项)。
- 将调试符号复制到单独的文件中,并从二进制文件中剥离。
- 向二进制文件添加GNU调试符号链接。
在应用程序开始时,会调用setrlimit
函数将core limit设置为无穷大-这是问题所在吗?