Solaris モジューラデバッガ

mdb_dumpptr() および mdb_dump64()

int mdb_dumpptr(uintptr_t addr, size_t nbytes, uint_t flags,
                     mdb_dumpptr_cb_t func, void *data);
int mdb_dump64(uint64_t addr, uint64_t nbytes, uint_t flags,
                     mdb_dump64_cb_t func, void *data);

これらの関数を使用すると、書式化された 16 進数および ASCII のデータダンプを生成して標準出力に出力できます。どらちの関数も、開始場所を指定する addr パラメータ、表示するバイト数を指定する nbytes パラメータ、フラグセット (次を参照)、表示するデータを読み取るために使用する func コールバック関数、そして、func コールバック関数の呼び出しごとに最後の引数として渡されるデータパラメータを受け入れます。これらの関数はほとんど同じですが、mdb_dumpptruintptr_t をアドレスパラメータとして使用し、mdb_dump64uint64_t を使用します。この区別は、たとえば、mdb_dump64mdb_pread に結びつけるときに便利です。組み込み ::dump dcmd はこれらの関数を使用してデータを表示します。

flags パラメータは、次の 1 つ以上の値のビット単位の論理和となります。

MDB_DUMP_RELATIVE

各行に、絶対的なアドレスではなく、開始アドレスからの相対的な行数を与えます。

MDB_DUMP_ALIGN

出力を段落境界に揃えます。

MDB_DUMP_PEDANT

アドレスを 80 カラムに揃えて切り捨てるのではなく、完全な幅で表示します。

MDB_DUMP_ASCII

16 進数データの次に ASCII 値を表示します。

MDB_DUMP_HEADER

データについてのヘッダー行を表示します。

MDB_DUMP_TRIM

行全体を読み取って出力するのではなく、指定されたアドレスの内容だけを読み取って表示します。

MDB_DUMP_SQUISH

前の行を繰り返している行に「*」を表示することによって、繰り返し行を省略します。

MDB_DUMP_NEWDOT

ドット値を、関数が読み取った最後のアドレスを超えるアドレスに更新します。

MDB_DUMP_ENDIAN

エンディアン性を調整します。このオプションは、ワードサイズが (MDB_DUMP_GROUP() で指定される) 現在のグループサイズと同じであることを想定します。このオプションは常に、整列、ヘッダー、および ASCII 表示をオフにして、出力が乱れることを防ぎます。MDB_DUMP_TRIM MDB_DUMP_ENDIAN が一緒に設定されている場合、ダンプされるバイト数はもっとも近いワードサイズのバイトに切り捨てられます。

MDB_DUMP_WIDTH(width )

表示される行ごとに 16 バイト段落の数をインクリメントします。width のデフォルト値は 1 で、最大値は 16 です。

MDB_DUMP_GROUP(group )

バイトグループのサイズを group に設定します。デフォルトの group サイズは 4 バイトです。group サイズは行幅を分割する 2 のべき乗にする必要があります。