【发布时间】:2014-05-31 02:56:27
【问题描述】:
我目前正在使用 CPU 采样分析控制台应用程序。操作系统是带有 Microsoft Visual Studio Ultimate 2012 Update 4 的 Windows 8 Enterprise 64 位。我看到 34% 的 Exclusive Samples 位于 mscorlib.ni.dll 中。然后在 Modules 视图中,我打开 mscorlib.ni.dll,我看到所有调用都是对未知行进行的。
我首先按照以下说明使用 ngen 下载了它们:http://blogs.msdn.com/b/visualstudioalm/archive/2012/12/10/creating-ngen-pdbs-for-profiling-reports.aspx 但没有运气。尽管 pdb 存在于正确的位置并在 VS 选项中正确引用。
在此之后,我尝试使用此 PS 脚本获取所有可能的符号:http://knagis.miga.lv/gen_ngen_pdb.txt,但仍然没有运气。即使 pdb (仍然)在那里。
有人已经遇到过这个问题吗?我看到了另一个答案Code profiling to improve performance : see CPU cycles inside mscorlib.dll?,但根本没有解决...
恩里科
【问题讨论】:
-
这里出错的地方太多了。为您的问题添加一些数据点。你得到的 .pdb 文件有多大?使用检测模式时会发生什么?当您在启用非托管调试的情况下调试程序时,Debugger + Windows + Modules 窗口是否会告诉您为 mscorlib.ni.dll 加载了符号?
-
感谢您的回答! - 另一个本机模块 System.ni.dll 尽管存在于本地符号缓存中,但未加载 - pdb,分析器显示的哈希值为 51e2934144ba15628ba5a31be2dae7dc1 (mscorlib.ni.pdb) 为 6.056.960 字节。 - 在配置文件加载期间显示以下错误消息:无法加载 C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\51e2934144ba15628ba5a31be2dae7dc\mscorlib.ni.dll 的符号
-
“加载符号失败”通知指出了根本问题。听起来您没有处理博文中的第 3 步。
-
嗨汉斯,你完全正确!最重要的部分是添加的符号文件位置(C:\Symbols)必须与“此目录中的缓存符号!我如何奖励您的回答?
-
@Kendar 既然你已经弄清楚了答案,你应该把关键点总结为答案并接受它。
标签: c# .net visual-studio-2012 profiling native-code