4

这是我已经试过:如何在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) 
} 

配置在这里列出的设置: https://blogs.msdn.microsoft.com/sburke/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code/

确认符号被装载在模块窗口:

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”的搜索率没有。

我在做什么错?

+0

工作得很好,看起来像参考源码符号服务器实际上更新到4.6.2。我得到的mscorlib.dll的散列码是BEC17127F5324AE795428E84A11901182。使用我记录的[此处](http://stackoverflow.com/a/27655501/17034)的故障排除过程。必要时清空缓存。 –

+0

@HansPassant删除缓存的PDB解决了第一个问题,谢谢(我有一个剥离的PDB?如何判断?)现在我可以进入函数,但它是“Dictionary [from metadata]”,而不是源代码。我有相同的散列BEC17127F5324AE795428E84A11901182。 – Jon

+0

@HansPassant我仍然有一个问题,因为它不通过源代码。 “来自元数据的字典”仅仅是界面,而不是实现。它应该从源服务器按需获取代码。 – Jon

回答

4

这是答案,这要归功于Hans Passant。请注意,此解决方案引发了其他问题。

  1. 确保https://referencesource.microsoft.com/包含您正在调试的确切版本。

  2. 配置的Visual Studio为这里规定: https://referencesource.microsoft.com/setup.html

    • 取消选中“启用仅我的代码”
    • 勾选“启用.NET框架源步进”(这应该是唯一需要的步骤)
    • 勾选“启用源服务器支持”
    • 取消选中“要求源文件与原始版本完全匹配”
  3. 确认符号加载模块窗口,与包括源索引。

    • 如何判断是否包含源索引?模块窗口不指定PDB是否剥离了源信息。

微软可以使这个过程更大量给予帮助的错误消息,而不是默默失败强劲。

+0

感谢您在这里分享您的解决方案,您可以将其标记为答案,这样可以帮助其他社区成员遇到同样的问题。当然,如果您对VS产品有任何好的建议,您可以通过报告工具提交功能请求(http://visualstudio.uservoice.com/forums/121579-visual-studio)或通过报告工具报告反馈VS IDE。 –

+0

我刚刚安装了.NET 4.7 Developer Pack,并在Windows 10上安装了VS2017中的解决方案。我试过所有这些说明,并且无法步入列表 Sort。我无法真正看到围绕此的安全更新。公平地说我有点卡住了! – Andez

+0

这适用于我https://hmemcpy.com/2014/07/how-to-debug-anything-with-visual-studio-and-jetbrains-dotpeek-v1-2/基本上使用JetBrains dotPeek作为符号服务器。 – Andez

1

使用Jetbrains dotPeek中的符号服务器功能。努力获得标准功能后,为我工作就像一个魅力。

+0

当其他一切都失败了,这就像一场梦! – DrGriff

+0

你能解释一下如何将它连接到vs2017吗? – Invader

+0

@Invader对不起,延迟和这个答案。我在VS2015中做到了。我在VS2017中简单地尝试了一下,但没有得到它的工作。从记忆中,遵循他们的doco得到它的工作。 –

相关问题