asp.net – 我可以使用xperf来分析托管代码吗?

我试图使用xperf在ASP.NET应用程序(本地运行)中分析CPU时间.

到目前为止,我遵循了标准程序:

>以管理员身份运行cmd
> xperf -on base
>在网络应用程序中做一些事情.
> xperf -d mylog.etl
> xperfview mylog.etl
>追踪 – >加载符号
>汇总表

此时,我可以看到非托管代码的调用报告.

对于我的.NET程序集,我该怎么做才能看到相同的内容?这甚至可能吗?

我在_NT_SYMBOL_PATH中有我的PDB路径,至少我知道MS符号已加载.

我见过this question,但它没有解决方案.根据this answer,

You need the xperf Version from the Windows 8 SDK. This version
supports .net. Start a trace with the new Performance Recorder UI and
this tool generates PDBs for ngened .net components so that xperfview
and WPA can decode the callstack.

谁能证实这一点?我使用的是Windows 7和Windows 7 SDK.我对安装另一个平台SDK持怀疑态度.

更新:是的,Windows 8 SDK在Windows 7上运行,为此,您唯一需要的是Performance Toolkit.实际上,您甚至不必使用新的“Windows性能分析器”,因为新的“Windows性能记录器”生成的etl文件仍然可以使用xperfview,包括增强的堆栈跟踪.有关更多说明,请参阅已接受答案的评论

最佳答案 是的,你需要Windows 8版本.尝试一下,你会发现它工作正常.如果要使用xperf而不是WPR(UI),请按照下列步骤操作:

http://msdn.microsoft.com/en-us/library/ff357718%28v=vs.100%29.aspx

点赞