Linux中的选择性核心转储-如何选择转储的部分?
我正在寻找一种方法来选择包含在核心转储中的节和内存区域。Linux中的选择性核心转储-如何选择转储的部分?,linux,memory,coredump,Linux,Memory,Coredump,我正在寻找一种方法来选择包含在核心转储中的节和内存区域。 我的应用程序的核心转储大小约为30GB,其中大部分位于预分配的缓冲区中,调试时甚至不需要这些缓冲区(以后可以归零)。但是,由于转储太大,应用程序完成崩溃并开始恢复需要花费太多时间。 有人能想出一种方法提前选择哪些段将在核心转储中吗? 谢谢我不确定是否可以设置要转储的内存部分 从man 5 core 包含进程终止时内存映像的磁盘文件 作为一个选项,您可以使用setrlimit和RLIMIT\u core参数截断核心文件。根据手册页,您可以设
我的应用程序的核心转储大小约为30GB,其中大部分位于预分配的缓冲区中,调试时甚至不需要这些缓冲区(以后可以归零)。但是,由于转储太大,应用程序完成崩溃并开始恢复需要花费太多时间。
有人能想出一种方法提前选择哪些段将在核心转储中吗?
谢谢我不确定是否可以设置要转储的内存部分 从
man 5 core
包含进程终止时内存映像的磁盘文件
作为一个选项,您可以使用setrlimit
和RLIMIT\u core
参数截断核心文件。根据手册页,您可以设置哪些映射写入核心文件:
自内核2.6.23以来
特定于Linux的
/proc/PID/coredump\u过滤器文件可以是
用于控制哪些内存段
在中写入核心转储文件
核心转储失败的事件
为具有的流程执行
对应的进程ID
文件中的值是位掩码
内存映射类型(参见mmap(2))。
如果掩码中设置了位,则
对应对象的内存映射
类型被丢弃;否则就是
没有被抛弃。这个文件中的位
具有以下含义:
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.
默认情况下,设置以下位:0、1、4(如果
配置\核心\转储\默认\ ELF\头
内核配置选项已启用)和5。
此文件的值以十六进制显示。(修订)
因此,默认值显示为33。)
内存映射的I/O页(如帧缓冲区)永远不会转储,并且
无论coredump_过滤器如何,虚拟DSO页面始终被转储
价值观
仅当内核是使用
配置ELF核心配置选项
谢谢正是我想要的。