VS2010 分析器似乎无法解析来自 ngen 图像的符号
Posted
技术标签:
【中文标题】VS2010 分析器似乎无法解析来自 ngen 图像的符号【英文标题】:VS2010 profiler seems to not resolve symbols from ngen'd images 【发布时间】:2010-06-26 15:40:55 【问题描述】:我正在通过以“采样”模式附加到 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
他们。
【问题讨论】:
【参考方案1】:当您在 VS2010 中打开性能报告时,您是否在错误列表中看到任何消息?如果没有正确的环境变量,解析托管符号所需的组件将不会被注入到进程中,只会解析原生图像。
如果您正在分析服务,则需要使用vsperfclrenv /globalsampleon
,然后重新启动以确保环境变量设置正确。
【讨论】:
以上是关于VS2010 分析器似乎无法解析来自 ngen 图像的符号的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2012安装:ngen挂起/什么都不做