我正在通过在“采样”模式下附加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
他们。
答案 0 :(得分:0)
在VS2010中打开性能报告时,您是否在错误列表中看到任何消息?如果没有正确的环境变量,则不会将解析托管符号所需的组件注入到流程中,只会解析本机映像。
如果要分析服务,则需要使用vsperfclrenv /globalsampleon
,然后重新启动以确保正确设置环境变量。