1

我通过在“采样”模式下附加到 Windows 服务来分析它。

我打开结果文件,“函数”视图,我看到“最热门”函数显示为[System.Runtime.Serialization.ni.dll]没有指示此程序集中的具体 .net 函数。

看起来来自 ngen 的程序集 (.ni.dll) 的所有其他符号都以相同的方式显示。此外,我在列表中看不到任何来自托管但不是 ngen 的程序集的符号,这很奇怪。

但是,所有本机符号都可以解析,例如“AwareLock::Contention(int)”等。

此外,输出选项卡显示:

Loaded symbols for C:\Windows\assembly\NativeImages_v2.0.50727_64\System.Runtime.Seri#\12aaff696a0c54773664b4c5407deaa2\System.Runtime.Serialization.ni.dll.

另外,我还没有启动vsperfclrenv,但是在并发分析模式下一切都解决了,所以我认为我不需要vsperfclrenv,因为VS2010为我做了一切。

我试过跑步ngen update /debug /profile,但它没有改变任何事情。

如何设置我的环境,以便 VS2010 的采样分析器解析这些托管程序集中的符号?

同时,我会尝试ngen uninstall使用它们。

4

1 回答 1

0

当您在 VS2010 中打开性能报告时,您是否在错误列表中看到任何消息?如果没有正确的环境变量,解析托管符号所需的组件将不会被注入到进程中,只会解析本机图像。

如果您正在分析服务,则需要使用vsperfclrenv /globalsampleon然后重新启动以确保环境变量设置正确。

于 2011-03-26T02:19:14.923 回答