使用 运行 进程的共享内存收集核心转储
Collect core dump with shared memory of running process
核心转储仅收集进程 space 而不是为进程间通信创建的共享内存。我怎样才能使核心转储也包含 运行 进程的共享内存?
核心文件捕获了包括共享内存在内的完整进程地址space。您可以通过在 Linux 上使用 gcore 命令生成核心文件,然后检查存储在核心文件共享内存中的特定内容来进行检查。
根据 http://man7.org/linux/man-pages/man5/core.5.html:
在 /proc/PID/coredump_filter
中设置核心文件过滤器
控制将哪些映射写入核心转储
Since kernel 2.6.23, the Linux-specific /proc/PID/coredump_filter
file can be used to control which memory segments are written to the
core dump file in the event that a core dump is performed for the
process with the corresponding process ID.
The value in the file is a bit mask of memory mapping types (see
mmap(2)). If a bit is set in the mask, then memory mappings of the
corresponding type are dumped; otherwise they are not dumped. The
bits in this file have the following meanings:
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.
bit 7 (since Linux 4.4)
Dump private DAX pages.
bit 8 (since Linux 4.4)
Dump shared DAX pages.
By default, the following bits are set: 0, 1, 4 (if the
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS kernel configuration option is
enabled), and 5. This default can be modified at boot time using the
coredump_filter boot option.
核心转储仅收集进程 space 而不是为进程间通信创建的共享内存。我怎样才能使核心转储也包含 运行 进程的共享内存?
核心文件捕获了包括共享内存在内的完整进程地址space。您可以通过在 Linux 上使用 gcore 命令生成核心文件,然后检查存储在核心文件共享内存中的特定内容来进行检查。
根据 http://man7.org/linux/man-pages/man5/core.5.html:
在/proc/PID/coredump_filter
中设置核心文件过滤器
控制将哪些映射写入核心转储
Since kernel 2.6.23, the Linux-specific /proc/PID/coredump_filter
file can be used to control which memory segments are written to the
core dump file in the event that a core dump is performed for the
process with the corresponding process ID.
The value in the file is a bit mask of memory mapping types (see
mmap(2)). If a bit is set in the mask, then memory mappings of the
corresponding type are dumped; otherwise they are not dumped. The
bits in this file have the following meanings:
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.
bit 7 (since Linux 4.4)
Dump private DAX pages.
bit 8 (since Linux 4.4)
Dump shared DAX pages.
By default, the following bits are set: 0, 1, 4 (if the
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS kernel configuration option is
enabled), and 5. This default can be modified at boot time using the
coredump_filter boot option.