无法进入.NET源代码

时间:2017-04-12 20:56:12

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

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

我正在尝试在调试代码的同时进入.NET源代码,但是对于我的生活我无法让它工作 - 在调试器中点击 F11 / Step Into 结果我的下一行来源。我正试着进入Type.InvokeMember()的电话。在模块窗口中,我看到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 ,我会得到一个新的"生成的源文件&# 34;窗口选项卡上名为Type [from metadata]的窗口。将鼠标悬停在选项卡上会为我提供文本

Preview of C:\Users\conrad\AppData\Local\Temp\6012$CommonLanguageRuntimeLibrary$v4.0.30319$NoDynamic\System.Type.cs [from metadata]

在工具提示中。 {3}变体有3个InvokeMember声明。具有最多args的那个标记为abstract(我正在使用的版本),另外两个具有属性

[DebuggerHidden]
[DebuggerStepThrough]

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

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

我的符号位置:

Symbol Locations

1 个答案:

答案 0 :(得分:2)

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

来自MSDN here

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

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