2016-06-26 3 views
1

私は次のようにOS X 10.11、および生成されたダンプファイルに取り組んでいます:コアダンプサイズ

1. ulimit -c unlimited 
2. kill -10 5228 (process pid) 

とローリング属性でダンプファイルを得た:642M Jun 26 15:00 core.5228

その直前に、vmmapコマンドを使用してプロセスの合計メモリ容量をチェックして、予想されるダンプサイズを推定しました。

しかし、見積もり(238.7Mb)は実際のサイズ(642Mb)よりもずっと小さくなっています。

このギャップは説明できますか?

       VIRTUAL REGION 
REGION TYPE      SIZE COUNT (non-coalesced) 
===========      ======= ======= 
Activity Tracing     2048K  2 
Kernel Alloc Once     4K  2 
MALLOC guard page     16K  4 
MALLOC metadata     180K  6 
MALLOC_SMALL      56.0M  4   see MALLOC ZONE table below 
MALLOC_SMALL (empty)    8192K  2   see MALLOC ZONE table below 
MALLOC_TINY      8192K  3   see MALLOC ZONE table below 
STACK GUARD      56.0M  2 
Stack        8192K  2 
__DATA       1512K  44 
__LINKEDIT      90.9M  4 
__TEXT       8336K  44 
shared memory      12K  4 
===========      ======= ======= 
TOTAL       238.7M  110 

           VIRTUAL ALLOCATION  BYTES   REGION 
MALLOC ZONE       SIZE  COUNT ALLOCATED % FULL COUNT 
===========      ======= ========= ========= ====== ====== 
DefaultMallocZone_0x100e42000  72.0M  7096  427K  0%  6 

答えて

1

コアダンプはプロセスメモリをフィルタリングできます。

マッピングがコアに書かれているの制御が

はカーネル2.6.23以来、Linux固有の/ proc/PID/coredump_filterファイルがメモリ・セグメントを制御するために使用することができますダンプ:core man pageを参照してください。対応するプロセス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. 
     bit 7 (since Linux 4.4) 
      Dump private DAX pages. 
     bit 8 (since Linux 4.4) 
      Dump shared DAX pages. 

を、次のビットが設定されている:0、1、4(CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERSカーネル設定オプションが有効な場合)、および5は、このデフォルトを変更することができます起動時にcoredump_filterブートオプションを使用してください。

OS Xは同様に動作すると仮定します。

+0

「/ proc/self/status」の 'VmSize'フィールドで取得されたプロセス仮想マップメモリ​​では考慮されていないメモリを追加するビット0~8の任意のデータはありますか? – Zohar81