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挂起/什么都不做

vs2010 error:1个无法解析的外部命令

Ngen vs RyuJIT - (预)启动时最快的 x64 运行代码无关紧要

VS2010无法解析的外部错误...

无法在 VS 2010 性能分析器中捕获 CPU 指标

无法在 VS 2010 中设置 getter 和 setter