mmapfile コマンドは、コアダンプに存在しないメモリーマップファイルの内容を表示します。ネイティブモードでだけ有効です。
Oracle Solaris コアファイルには、読み取り専用のメモリーセグメントは含まれていません。実行可能な読み取り専用セグメント (つまりテキスト) は自動的に処理され、dbx は、実行可能ファイルと関連する共有オブジェクトを調べることによってこれらのセグメントに対するメモリーアクセスを解釈処理します。
コアダンプに存在しないメモリーマップファイルの内容を表示します。
ここでは:
mmapped-file は、コアダンプ中にメモリーマップされたファイルのファイル名です。
address は、プロセスのアドレス空間の開始アドレスです。
length は、表示対象アドレス空間のバイト単位による長さです。
offset は、mmapped-file の開始アドレスまでのバイト単位によるオフセットです。
読み取り専用データセグメントは、アプリケーションメモリーがデータベースをマップしたときに通常発生します。例:
caddr_t vaddr = NULL; off_t offset = 0; size_t = 10 * 1024; int fd; fd = open("../DATABASE", ...) vaddr = mmap(vaddr, size, PROT_READ, MAP_SHARED, fd, offset); index = (DBIndex *) vaddr;
次のコマンドは、メモリーとしてデバッガーからデータベースへのアクセスを可能にします。
mmapfile ../DATABASE $[vaddr] $[offset] $[size]
データベースの内容を構造的に表示するには:
print *index