【问题标题】:Profiling C# and mscorlib.ni.dll分析 C# 和 mscorlib.ni.dll
【发布时间】: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


【解决方案1】:

有一个look at the reference project for .net in mscorelib。我在这里复制文字:

为了配置 Visual Studio 2013,请在工具 -> 选项 -> 调试 -> 常规菜单中执行以下操作:

  • 只禁用我的代码
  • 禁用跨属性和运算符
  • 禁用要求源文件与原始版本完全匹配
  • 启用 .NET 框架源代码步进
  • 启用源服务器支持 我可以想象并非所有类都受支持,有些类中会包含专有代码,但是可以找到有关 mscorelib 的受支持 DLL 列表here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多