.NET 4.0 NGEN x64 程序集上的符号解析不起作用

Posted

技术标签:

【中文标题】.NET 4.0 NGEN x64 程序集上的符号解析不起作用【英文标题】:Symbol Resolution on .NET 4.0 NGEN x64 assembly not working 【发布时间】:2012-07-16 17:03:13 【问题描述】:

我在 x64 NGEN .NET 4.0 程序集上的符号解析不起作用。

详情:

我有一个 .NET 4.0 命令行程序集,我正在使用带有 x64 配置的 Visual Studio 进行编译。编译后,我在上面运行 NGEN(64 位版本)。

XPERF 分析无法解析我的符号的调用堆栈(使用 -stackwalk 配置文件)失败。我现在正在从这里尝试 Perfmonitor:http://bcl.codeplex.com/releases/view/42784

我已经完成了这些步骤,并且希望调用堆栈能够解决:

启动 NGEN 的 x64 应用程序 PerfMonitor 收集 性能监视器合并 性能监控分析

...不幸的是,堆栈跟踪在 PerfMonitor 中也不起作用。

我还尝试将应用程序作为 32 位运行——同样的问题。我的符号使用 symchk /v

检查得很好

我不知道如何调试这个损坏的堆栈跟踪功能。

【问题讨论】:

【参考方案1】:

不确定我是否理解正确,但您需要生成可分析的 NGEN“程序集”。

IOW:ngen install ass.dll /profile

【讨论】:

立即尝试。会告诉你它是否修复它。感谢您的快速回复 @ThomasKejser:你也可以加入/debug 标志:) 恐怕不走运。还是一样的问题 @ThomasKejser: :( 我会在这里留下我的答案,让未来的人知道我们已经覆盖了这个基础。【参考方案2】:

您需要来自 Windows 8 SDK 的 xperf 版本。此版本支持 .net。使用新的 Performance Recorder UI 开始跟踪,此工具会为生成的 .net 组件生成 PDB,以便 xperfview 和 WPA 可以解码调用堆栈。

【讨论】:

以上是关于.NET 4.0 NGEN x64 程序集上的符号解析不起作用的主要内容,如果未能解决你的问题,请参考以下文章

VS2010 分析器似乎无法解析来自 ngen 图像的符号

Visual Studio 2012安装:ngen挂起/什么都不做

在“任何 CPU”.NET 程序集上强制 x86 CLR

未加载 ngen-ed 程序集的符号

在 x64 系统上的 .NET 中打开 Excel 电子表格

c#程序打包机器代码生成(Ngen.exe)