VS2010探测器似乎无法解析ngen'd图像中的符号

时间:2010-06-26 15:40:55

标签: .net performance profiling symbols ngen

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

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

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

但是,所有本机符号都可以解析,例如“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他们。

1 个答案:

答案 0 :(得分:0)

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

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