機械翻訳について

tracemem

指定したバイト数のデータをメモリー内のアドレスから現在のバッファにコピーします。

void tracemem(addr, size_t bytes[, size_t limit])

tracemem関数は、指定されたバイト数bytesのデータを、メモリー内のアドレスaddrから現在のバッファにコピーします。 データのコピー元のアドレスは、D式として指定します。 オプションの3番目の引数limitを使用すると、バッファにコピーされるデータのサイズを制限できます。 limitは可変量にできますが、メモリーからコピーするように指定したメモリー・データのサイズ以下にする必要があります。それ以外は無視されます。

バッファにコピーされるデータの制限は、コピーするデータに既知の上限がありますが、実際のバイト数は異なる場合があります。 DTraceは、コンパイル時にbytesを静的に出力バッファに予約します。 bytesの数を設定することで、実行時に出力バッファに大量のメモリーを予約できますが、動的なlimitを指定することで使用するメモリー量を動的に制御します。

例8-59 tracememを使用して現在のスレッドのメモリー内のアドレスから256バイトをトレースする方法

この例では、組込み変数curthreadを使用して、現在のスレッドへのポインタを作成しています。

BEGIN {
     p = curthread;
     tracemem(p, 256);
     exit(0);
 }