【问题标题】:Cannot step into .NET source code无法进入 .NET 源代码
【发布时间】:2017-04-12 20:56:12
【问题描述】:

环境:W10 Pro x64、Visual Studio Premium 2013 Update 5、类库项目、目标框架 .NET 4.5.2。

我在调试我的代码时尝试进入 .NET 源代码,但在我的一生中,我无法让它工作 - 点击 F11/Step Into 会导致调试器进入我的源代码的下一行。我正在尝试拨打Type.InvokeMember()。在 Modules 窗口中,我看到 mscorlib.dll 已加载其符号。一个有趣的信息;不确定它是否相关:mscorlib.dll路径 显示为

C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll

版本 列显示

4.6.1637.0 built by: NETFXREL3STAGE

所以问题#1:这很糟糕吗? (另外,这里是mscorlib.dll符号加载信息):

C:\Program Files (x86)\Sage Software\Sage MAS 500 Client\PO\mscorlib.pdb: Cannot find or open the PDB file. 
C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.pdb: Cannot find or open the PDB file. 
C:\Windows\mscorlib.pdb: Cannot find or open the PDB file. 
C:\Windows\symbols\dll\mscorlib.pdb: Cannot find or open the PDB file. 
C:\Windows\dll\mscorlib.pdb: Cannot find or open the PDB file. 
C:\Temp\SymbolCache\mscorlib.pdb\a41a5f0d874946f7af63753340e70f252\mscorlib.pdb: Cannot find or open the PDB file. 
C:\Temp\SymbolCache\MicrosoftPublicSymbols\mscorlib.pdb\a41a5f0d874946f7af63753340e70f252\mscorlib.pdb: Cannot find or open the PDB file. 
SYMSRV:  C:\Temp\SymbolCache\mscorlib.pdb\A41A5F0D874946F7AF63753340E70F252\mscorlib.pdb not found
SYMSRV:  http://referencesource.microsoft.com/symbols/mscorlib.pdb/A41A5F0D874946F7AF63753340E70F252/mscorlib.pdb not found
http://referencesource.microsoft.com/symbols: Symbols not found on symbol server. 
SYMSRV:  mscorlib.pdb from http://msdl.microsoft.com/download/symbols: 133365 bytes 
http://msdl.microsoft.com/download/symbols: Symbols downloaded from symbol server. 
C:\Temp\SymbolCache\mscorlib.pdb\A41A5F0D874946F7AF63753340E70F252\mscorlib.pdb: Symbols loaded.


另外,如果当我的光标在调用InvokeMember() 时按F12,我会在窗口选项卡上看到一个名为Type [from metadata] 的新“生成的源文件”窗口。将鼠标悬停在选项卡上会给我文本
Preview of C:\Users\conrad\AppData\Local\Temp\6012$CommonLanguageRuntimeLibrary$v4.0.30319$NoDynamic\System.Type.cs [from metadata]

在工具提示中。 InvokeMember 有 3 个声明,用于其 3 个变体。 args最多的一个标注abstract(我正在使用的版本),另外2个有属性

[DebuggerHidden]
[DebuggerStepThrough]

所以 - 问题 #2 - 这些属性会阻止我进入源代码吗?如果是这样,有没有办法覆盖?

感觉就像我已经查看了关于进入 .NET 源代码的所有其他 SO 问题,但没有成功 - 这是我的调试选项:

还有我的符号位置:

【问题讨论】:

  • 显而易见的问题:您是否安装了 .NET 源代码?
  • @RayFischer 我没有明确安装任何东西。符号服务器不是按需下载源代码吗?
  • @Conrad,如果您将.NET Framework 版本更改为4.5.1,结果如何?也请选择“要求源文件与原始版本完全匹配”,或者您可以将符号捕获文件夹更改为新的空白路径,再次调试。
  • @JackZhai-MSFT 在降级到 4.5.1 并选择“需要源...”选项后运气不佳。
  • @Conrad,你想直接获取源代码吗? referencesource.microsoft.com/download.html,也许你可以直接下载,然后参考,请清理重建你的项目,重新调试。

标签: c# .net visual-studio debugging visual-studio-debugging


【解决方案1】:

符号服务器包含 ... 符号,而不是源代码。

来自 MSDN here

“程序数据库 (.pdb) 文件,也称为符号文件,将您在源文件中为类、方法和其他代码创建的标识符映射到在项目的已编译可执行文件中使用的标识符。 .pdb 文件还将源代码中的语句映射到可执行文件中的执行指令。调试器使用此信息来确定两个关键信息:Visual Studio IDE 中显示的源文件和行号以及位置在可执行文件中设置断点时停止。符号文件还包含源文件的原始位置,以及可以从中检索源文件的源服务器的位置。"

符号服务器包含符号(函数名称、变量等),它们不包含源代码。你可以找到mscorlib.dll here的源代码。

【讨论】:

  • 感谢您的信息 - 但是,我没有看到可以在该站点上下载 mscorlib.dll 的源文件的位置 - 是否有我丢失的链接? VS 中是否有一个地方可以指定源服务器(而不是“包含源代码的目录”)?
  • 今天页面顶部有一个下载链接。它使您有机会下载包含框架 4.5.1 - 4.8 的所有源代码的 ZIP 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2010-11-14
  • 1970-01-01
相关资源
最近更新 更多