我正在尝试通过单击堆栈跟踪来调试System.Net.Http.Formating.dll:
System.Net.Http.Formatting.dll!System.Net.Http.Formatting.JsonMediaTypeFormatter.WriteToStreamAsync.AnonymousMethod__c()
我的“我的代码已禁用”,我有以下符号服务器:
https://nuget.smbsrc.net
http://localhost:33417/ (dot peek)
Microsoft Symbol Server
我确实有pdb可用,但是我得到以下错误/图像。
如何正确克服它?
为什么在Visual Studio中调试第三方源代码会如此麻烦?
答案 0 :(得分:8)
在按照@Jack Zhai-MSFT指出的链接后,我终于能够理解.net框架无法调试的原因。
原来,这些符号是在没有各自来源的情况下下载的,因为我指的是Microsoft Symbol Server而不是http://referencesource.microsoft.com/symbols
然后,我的以下尝试是取消选中“Microsoft Symbols Server”或更改符号菜单中的顺序。令我惊讶的是,我无法删除它,也无法更改顺序,即使在禁用之后,仍然会从那里获取符号。
也许这是一个VS2017社区错误。
我接下来做了什么,实际上解决了它:
请注意,我仍然无法下载像system.net.http这样的“优化符号”,但我会尝试下一步
另外,我使用它作为参考来设置符号服务器,这有助于我及时获得任何第三方符号(除了.net)
https://www.symbolsource.org/Public/Wiki/Using
编辑:
在dotPeeker的帮助下,我能够通过以下方式获取所有丢失的pdb文件:
唷!!对于应该是微不足道的事情来说真是麻烦!
答案 1 :(得分:1)
要调试第三方源代码,您可以将.NET Reflector或dotPeek与VS一起使用。
参考:
Is it possible to actually debug 3rd party code using the source decompiled with dotPeek?
更新
如果您只想调试.NET源代码,请参阅:How do I debug .NET 4.6 framework source code in Visual Studio 2017?