如何在Visual Studio 2017中调试.NET 4.6框架源代码?
这是我已经试过:如何在Visual Studio 2017中调试.NET 4.6框架源代码?
做了一个新的控制台应用程序(.NET框架)在Visual Studio 2017年
添加以下代码:
static void Main(string[] args)
{
new Dictionary<int, int>().TryGetValue(3, out int x); //I want to step into TryGetValue() (this is just an example)
}
确认符号被装载在模块窗口:
mscorlib.dll符号加载。 4.6.1586.0通过内置:NETFXREL2
尝试: “进入(F11)”
尝试: “走进特殊” | “System.Collections.Generic.Dictionary.TryGetValue”
两者都只是跨越了界限。
我试着在这里使用的细节配置VS:http://www.symbolsource.org/Public/Home/VisualStudio
同样的结果,过线的调试步骤。
我看了答案在这里:https://stackoverflow.com/a/12432029/297451
但这个版本似乎并没有成为一个安全更新,而对于“网站:support.microsoft.com/kb 4.6.1586.0”的搜索率没有。
我在做什么错?
这是答案,这要归功于Hans Passant。请注意,此解决方案引发了其他问题。
-
确保https://referencesource.microsoft.com/包含您正在调试的确切版本。
- 怎么样?参考源指定”的.NET Framework 4.6.2" ,而是一个模块的版本是这样的:‘4.6.1586.0’
- 您可能需要卸载安全更新如下解释:How do you enable "Enable .NET Framework source stepping"?
-
配置的Visual Studio为这里规定: https://referencesource.microsoft.com/setup.html
- 取消选中“启用仅我的代码”
- 勾选“启用.NET框架源步进”(这应该是唯一需要的步骤)
- 勾选“启用源服务器支持”
- 取消选中“要求源文件与原始版本完全匹配”
-
确认符号加载模块窗口,与包括源索引。
- 如何判断是否包含源索引?模块窗口不指定PDB是否剥离了源信息。
微软可以使这个过程更大量给予帮助的错误消息,而不是默默失败强劲。
感谢您在这里分享您的解决方案,您可以将其标记为答案,这样可以帮助其他社区成员遇到同样的问题。当然,如果您对VS产品有任何好的建议,您可以通过报告工具提交功能请求(http://visualstudio.uservoice.com/forums/121579-visual-studio)或通过报告工具报告反馈VS IDE。 –
我刚刚安装了.NET 4.7 Developer Pack,并在Windows 10上安装了VS2017中的解决方案。我试过所有这些说明,并且无法步入列表
这适用于我https://hmemcpy.com/2014/07/how-to-debug-anything-with-visual-studio-and-jetbrains-dotpeek-v1-2/基本上使用JetBrains dotPeek作为符号服务器。 – Andez
工作得很好,看起来像参考源码符号服务器实际上更新到4.6.2。我得到的mscorlib.dll的散列码是BEC17127F5324AE795428E84A11901182。使用我记录的[此处](http://stackoverflow.com/a/27655501/17034)的故障排除过程。必要时清空缓存。 –
@HansPassant删除缓存的PDB解决了第一个问题,谢谢(我有一个剥离的PDB?如何判断?)现在我可以进入函数,但它是“Dictionary [from metadata]”,而不是源代码。我有相同的散列BEC17127F5324AE795428E84A11901182。 – Jon
@HansPassant我仍然有一个问题,因为它不通过源代码。 “来自元数据的字典”仅仅是界面,而不是实现。它应该从源服务器按需获取代码。 – Jon