0

リターンプローブの関数に渡された初期引数を読み取ろうとしています。エントリプローブとは異なり、リターンプローブの引数変数(、、arg0... arg1)には初期パラメータが含まれておらず、これらの値をどのように取得できるかわかりません。

また、並行性の問題があるため、グローバル変数に値を格納することは避けたいと思います。

4

2 に答える 2

2

パラメータをスレッドローカルストレージに保存できます。例:

pid$target:foo:bar:entry
{
    self->arg0 = arg0;
    self->arg1 = arg1;
    /*
     * Avoid the race in which dtrace(1) attaches to the victim during
     * the window between the two probes.
     */
    self->trace = 1;
}

pid$target:foo:bar:return
/self->trace/
{
    printf("arg0 = 0x%x, arg1 = 0x%x\n", self->arg0, self->arg1);
    /* Deallocate the thread-local storage. */
    self->arg0 = 0;
    self->arg1 = 0;
}
于 2012-08-06T15:04:08.983 に答える