複雑なタイトルで申し訳ありませんが、これが私のスクリプトの dtrace 出力です。これは、私が話していることを説明するのに役立つと思います。
16384 1
38048 1
38050 1
38051 1
38055 1
-58632623 1
-5180681 1
-4576706 1
-4498881 1
-4472021 1
-4464140 1
<...>
mymodule.so`FuncXXX
mymodule.so`FirstFunc+0x23c
8
mymodule.so`FuncXXX
mymodule.so`SecondFunc+0x4bc
9
mymodule.so`FuncXXX
mymodule.so`ThirdFunc+0x1e1
35
mymodule.so`FuncXXX
mymodule.so`FourthFunc+0x70
39
dtrace スクリプトは次のとおりです。
pid$1:mymodule:FuncXXX:entry{
@a[arg1] = count();
@b[arg2] = count();
@c[ustack()] = count();
}
FuncXXX には次の記号があります。void FuncXXX(void *arg, long int p, int q);
p
今、私は変数とを集約したいのですq
が、 FuncXXX が呼び出された順序で、例えば:
mymodule.so`FuncXXX'
mymodule.so`FirstFunc'+0x23c
8
16384 1
38048 1
38050 1
38051 1
38055 1
-58632623 1
-5180681 1
-4576706 1
-4498881 1
-4472021 1
-4464140 1
mymodule.so`FuncXXX'
mymodule.so`SecondFunc'+0x4bc
9
49599 1
51533 1
51535 1
52149 1
52152 1
-148909 1
-135530 1
-121514 1
-117860 1
-97633 1
and so on
それは可能ですか?FirstFunc
または、 、SecondFunc
、ThirdFunc
および をFourthFunc
個別にトレースする必要がありますか? しかし、問題は、その関数のすべてで、FuncXXX
常に呼び出すことができるとは限らないということです。
すべての回答によろしくお願いします。