我想在运行 Linux 的嵌入式系统上为我的大型 C 应用程序生成核心转储文件。如果我设置
ulimit -c unlimited
我得到大约 100Mb 的大转储文件。这对我来说太多了,因为如果我的应用程序崩溃并且核心没有完全生成,我的系统就会重新启动。此外,它更难以操作(压缩或压缩)。
我认为我不需要整个内存转储,我只想看看当我有一个时我的崩溃在哪里。所以我只需要堆栈和我猜的堆......
如果我设置
ulimit -c 1024
我会丢失什么数据?
在 core(5) 手册页上,他们解释了我们如何设置掩码来选择要转储的数据:
bit 0 Dump anonymous private mappings.
bit 1 Dump anonymous shared mappings.
bit 2 Dump file-backed private mappings.
bit 3 Dump file-backed shared mappings.
bit 4 (since Linux 2.6.24)
Dump ELF headers.
bit 5 (since Linux 2.6.28)
Dump private huge pages.
bit 6 (since Linux 2.6.28)
Dump shared huge pages.
也许那里有优化?
谢谢!