【问题标题】:Cannot step into .NET framework source with VS2008 SP1无法使用 VS2008 SP1 进入 .NET 框架源
【发布时间】:2009-02-18 16:04:05
【问题描述】:

不知何故,我的 VS2008 SP1 失去了进入 .NET 框架源代码的能力。我一直在玩复选框。我已经多次重新删除了 Symbol 缓存文件夹;我已经尝试过各种调试符号服务器。

它所做的只是下载一些 .PDB 文件,但是当我尝试在 .NET 中选择堆栈帧时,我总是收到关于没有可用源和“你想查看反汇编”的消息。

什么给了?

添加: Web 应用程序; Windows Vista 商业 x32; .NET 3.5 SP1。

【问题讨论】:

  • 看来这个功能还不是很成熟,我也遇到过问题,但是前几天又可以正常使用了...
  • Web 应用程序、Windows 窗体或服务?
  • 检查我的答案上的更新链接,看看我是否在我的博客中发现了问题
  • 我看到的完全一样。
  • 我也有同样的问题。

标签: .net visual-studio-2008 debugging visual-studio-2008-sp1 source-server


【解决方案1】:

我相信您的问题是与从符号服务器下载的 pdb 中的图像版本相比,您的系统上运行的 .Net 版本不匹配。我在 64 位 Vista 和 Win7 上遇到了同样的问题。我还没有找到有关如何按照说明将程序集安装到 2.0.5.xxxx 的参考。 SP1 与我指示的两个操作系统上的所有服务包都显示在 2.0.0.xxxx 处的程序集

编辑:开始调试您拥有的任何应用程序,然后按 CTRL+ALT+U 以获取模块列表。它显示了应用程序正在使用 GAC 中的哪个程序集

我在博客上写了我认为更好地描述问题的内容。 Blog of problem

【讨论】:

  • 我怎么知道?我发现最好的是文件路径。例如,.DLL 为:C:\Windows\assembly\GAC_32\System.Web\2.0.0.0__b03f5f7f11d50a3a\System.Web.dll,而符号路径为:C:\Symbols\MicrosoftPublicSymbols\System.Web.pdb\ 64AF6E6A5B424405A87E37593541CC7F1\System.Web.pdb
  • 哦,“版本”列显示“2.0.50727.3074 (QFE.050727-3000)”。这是否意味着我得到了错误的符号文件?
  • 是的,你的版本是 2.0.50727.xxxx。我有相同的版本,除了 xxxx 部分,我也不能使用符号。它下载它们并像附加一样,但没有。相同的配置在 Vista 32 机器上运行良好。我只是倾向于它是符号和 gac 之间的版本问题
【解决方案2】:

当你进入调试模式时,打开模块窗口,右键单击框架组件并选择从微软服务器加载源代码。

【讨论】:

  • 这不是和右键单击堆栈帧并告诉它从 Microsoft 服务器加载源代码一样吗?如果是这样,那么它不起作用。但我明天回去工作时会试试这个建议。
  • 嗯...它适用于独立应用程序,但不适用于 Web 应用程序...
  • 微软服务器不是只返回没有源的pdb吗?
【解决方案3】:

我遇到了无法进入框架源代码的问题。

然后我进入项目设置,将目标平台设置为“任何 CPU”,然后魔法发生了,默认目标平台设置为“x86”。

我的平台Win7 x64,VS2010

【讨论】:

  • 有趣。虽然在我发布这篇文章时我只有一个 32 位操作系统,而且设置一直是“任何 CPU”。但这是值得注意的。
【解决方案4】:

我在 2005 年遇到过几次这种情况。其中大部分是伏都教,可能无关紧要,但这里的某个地方是答案(对我有用):

  1. 杀死服务
  2. 删除任何本地 .pdbs
  3. 删除(例如)C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 中的临时文件(仅与项目相关的文件或全部)
  4. 重启服务
  5. 如果不起作用,请重复 1-4,重新启动,然后尝试

【讨论】:

    【解决方案5】:

    我注意到,如果您在运行网站时出现此问题,在 IIS 中启用 HTTP keep-alives 可以解决此问题。

    【讨论】:

    • (我从未遇到过表单或服务的问题,除非是执行的应用程序与调试源不在同一位置。)
    • 在 Vista 上的 IIS7 中,据我从 Google 收集的信息,默认情况下启用此功能。 (更不用说很难改变了)
    【解决方案6】:

    我在不同的机器上遇到了同样的问题。 我现在在带有 .NET v2.0.50727 CLR (3.5sp1) 的 Win7 x86 上得到它。 引用最多的post 无济于事。 请注意,“Microsoft 符号服务器”不是具有 .NET 源的源服务器。它托管没有源信息(非索引)的 PDB。对于 .NET 源,我们需要来自“http://referencesource.microsoft.com/symbols”的索引 PDB 并启用源服务器支持。 但有时它会停止工作。 我猜无法下载索引 .net 的 PDB(如前所述)的问题与版本冲突有关。

    我只能这样说:

    WinServer 2008 R2 3.5.30729.4926 - 工作

    Win7 x86 3.5.30729.4918 - 不起作用

    我所说的“不起作用”是什么意思:尝试“从符号路径加载”(从模块或堆栈窗口,没关系)并获取选择 .pdb 的对话框(例如位于 C:\Windows\程序集\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.pdb )。那就是VS无法为dll下载pdb。 WinSrv2008r2 上的完全相同的操作使 VS 下载 pdb 和(如果启用源服务器支持)源。

    【讨论】:

      【解决方案7】:

      试试this 指令,一切正常!

      【讨论】:

      • 该指令不适用于修补到 SP1 的 x64 安装
      • 该指令适用于非 SP1。是的,在 SP1 之前它起作用了。现在没有了。
      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多