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);
}