私が不自然なプログラムを持っているとしましょう:
#include <Windows.h>
void useless_function()
{
Sleep(5000);
}
void useful_function()
{
// ... do some work
useless_function();
// ... do some more work
}
int main()
{
useful_function();
return 0;
}
目的: プロファイラーに、明らかな理由もなく待機してuseful_function()
いる不必要な呼び出しを教えてもらいたいです。useless_function()
XPerf では、自分のプログラムではなくへの呼び出しWaitForMultipleObjects()
が考慮されているように見えるため、これはどのグラフにも表示されません。Idle.exe
そして、これが私が現在実行している xperf コマンドラインです。
xperf -on Latency -stackwalk Profile
何か案は?
(これは待機関数に限定されません。上記の問題は、にブレークポイントを配置することで解決された可能性がありますNtWaitForMultipleObjects
。理想的には、CPU 時間だけではなく、多くのウォール クロック時間を消費しているスタック サンプルを確認する方法が存在する可能性があります)。