Vs2017来源不可用

Lui*_*Rol 10 debugging symbols visual-studio-2017

我正在尝试通过单击堆栈跟踪来调试System.Net.Http.Formating.dll:

System.Net.Http.Formatting.dll!System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStreamAsync.AnonymousMethod__c()
Run Code Online (Sandbox Code Playgroud)

我的"只是我的代码已禁用",我有以下符号服务器:

https://nuget.smbsrc.net
http://localhost:33417/ (dot peek)
Microsoft Symbol Server
Run Code Online (Sandbox Code Playgroud)

我确实有pdb可用,但是我得到以下错误/图像.

如何正确克服它?

为什么在Visual Studio中调试第三方源代码会如此麻烦?

在此输入图像描述

Lui*_*Rol 9

在按照@Jack Zhai-MSFT指出的链接后,我终于能够理解.net框架无法调试的原因.

事实证明,这些符号是在没有各自来源的情况下下载的,因为我指的是Microsoft Symbol Server而不是http://referencesource.microsoft.com/symbols

然后,我的以下尝试是取消选中"Microsoft Symbols Server"或更改符号菜单中的顺序.令我惊讶的是,我无法删除它,也无法更改顺序,即使在禁用之后,仍然会从那里获取符号.

也许这是一个VS2017社区错误.

我接下来做了什么,实际上解决了它:

  1. 删除了我的符号缓存,它在没有源代码的情况下误导了pdbs
  2. 启用我的代码标志,禁用"启用.NET Framework源步进"并在调试模式下启动应用程序
  3. 暂停在一个断点处,在堆栈中,我可以访问我想要调试的代码
  4. 双击此类堆栈,然后单击"加载符号".
  5. 这一次,由于某种原因,跳过了Microsoft Symbol Server,并下载了正确的pdbs

请注意,我仍然无法下载像system.net.http这样的"优化符号",但我会尝试下一步

另外,我使用它作为参考设置符号服务器,这有助于我及时获得任何第三方符号(除了.net)

https://www.symbolsource.org/Public/Wiki/Using

在此输入图像描述

编辑:

在dotPeeker的帮助下,我能够通过以下方式获取所有丢失的pdb文件:

  1. 将这些dll加载到dotpeeker中(例如:System.Net.Http)
  2. 从该DLL加载其中一个源文件
  3. 命中生成PDB并将其存储到VS2017使用的同一缓存文件夹中

唷!对于应该是微不足道的事情来说真是个麻烦!