64 ビット OS を実行している場合は、利用可能な物理メモリ + スワップ スペースの量を何倍も超えるファイル ベースのマッピングを持つことができます。
カーネル バージョン 2.6.23 以降、Linux は、コア ダンプ ファイルに含まれるものを制御するメカニズムを提供します。これは、コア ダンプ フィルターと呼ばれます。/proc/<pid>/coredump_filter
フィルタの値は、ファイルを介して操作されるビット フィールドです ( core(5)
man ページを参照)。
- ビット 0 (
0x01
) - 匿名のプライベート マッピング (動的に割り当てられたメモリなど)
- ビット 1 (
0x02
) - 匿名の共有マッピング
- ビット 2 (
0x04
) - ファイルに基づくプライベート マッピング
- ビット 3 (
0x08
) - ファイルに基づく共有マッピング (共有ライブラリなど)
- ビット 4 (
0x10
) - ELF ヘッダー
- ビット 5 (
0x20
) - プライベート ヒュージ ページ
- ビット 6 (
0x40
) - 共有されたヒュージ ページ
デフォルト値は、すべての匿名マッピングと ELF ヘッダー (ただし、カーネルが でコンパイルされている場合のみ) およびプライベート ヒュージ ページの0x33
ダンプに対応するです。CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS
このファイルから読み取ると、フィルターの 16 進値が返されます。新しい 16 進数値を書き込んcoredump_filter
で、特定のプロセスのフィルターを変更します。たとえば、考えられるすべてのマッピングのダンプを有効にするには、次のようにします。
echo 0x7f > /proc/<pid>/coredump_filter
(<pid>
プロセスのPIDはどこにありますか)
コア ダンプ フィルタの値は、 によって作成された子プロセスに継承されfork()
ます。
一部の Linux ディストリビューションでは、OS の起動段階の早い段階でプロセスのフィルター値が変更される場合がありinit
ます。たとえば、ファイルに基づくマッピングのダンプを有効にするためです。これは、後で開始されるすべてのプロセスに影響します。