tracemem

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

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

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

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

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

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

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