我正在尝试使用 xperf 分析 ASP.NET 应用程序(本地运行)中的 CPU 时间。
到目前为止,我遵循了标准程序:
cmd
以管理员身份运行xperf -on base
- 在网络应用程序中做一些事情。
xperf -d mylog.etl
xperfview mylog.etl
- 跟踪 -> 加载符号
- 汇总表
那时,我可以看到非托管代码的调用报告。
我必须做什么才能看到我的 .NET 程序集相同?这甚至可能吗?
我有我的 PDB 的路径_NT_SYMBOL_PATH
,至少我知道 MS 符号已加载。
您需要来自 Windows 8 SDK 的 xperf 版本。此版本支持 .net。使用新的 Performance Recorder UI 开始跟踪,此工具会为生成的 .net 组件生成 PDB,以便 xperfview 和 WPA 可以解码调用堆栈。
谁能证实这一点?我正在使用 Windows 7 和 Windows 7 SDK。我对安装另一个平台 SDK 持怀疑态度。
更新:是的,Windows 8 SDK 在 Windows 7 上运行,为此,您唯一需要的是性能工具包。事实上,您甚至不必使用新的“Windows 性能分析器”,因为etl
新的“Windows 性能记录器”生成的文件仍然可以使用xperfview
,包括增强的堆栈跟踪。有关进一步说明,请参阅对已接受答案的评论。