Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

mmapfile コマンド

mmapfile コマンドは、コアダンプに存在しないメモリーマップファイルの内容を表示します。ネイティブモードでだけ有効です。

Solaris コアファイルには、読み取り専用のメモリーセグメントは含まれていません。実行可能な読み取り専用セグメント (つまりテキスト) は自動的に処理され、dbx は、実行可能ファイルと関連する共有オブジェクトを調べることによってこれらのセグメントに対するメモリーアクセスを解釈処理します。

構文

mmapfile mmapped_file address offset length

コアダンプに存在しないメモリーマップファイルの内容を表示します。

ここで

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