I have checked the "Enable .NET Framework source stepping" debugging option in Visual Studio created a symbols cache directory. Now when I debug a project, Visual Studio creates a dialog saying "Downloading public symbols" and listing a referenced module. This occurs for every referenced module.
The upshot is I sometimes wait several minutes before I can actually begin debugging.
It is possible to hit "Cancel" and go straight to debugging. Then the next I debug it picks up where it left off.
Looking at my HTTP traffic, it appears that for every module it looks at referencesource.microsoft.com for the symbols. Symbols hosted by that server (ie, Microsoft modules like system.dll) are downloaded to the symbol cache. Other symbols get a file in the "FailedLoads" folder of the symbol cache with the text "PDB Not Found". No information about the failure is found in the Output window even though "Print source server diagnostic information messages to the Output window" is checked.
Once a module either has symbols in the cache or a file in FailedLoads folder, it does not cause the dialog to appear again. So letting the process complete once addresses the slow debugging startup time until new references are added.
I tried several things to see what would happen. Nothing pointed to a real solution.
- Unchecking "Enable .NET Framework source stepping" resolves the issue
- Setting automatically load symbols to include or exclude by default does not change the behavior
- Including or excluding a particular module from automatically loading symbols does not change the behavior for that module
- Checking/Unchecking "Enable source server support" or any of its child options does not change the behavior
- Checking/Unchecking the "Microsoft Symbol Servers" symbol location does not change the behavior
- Adding new symbol locations does not change the behavior. Modules available at these new symbol servers still end up in the FailedLoads folder, and no HTTP requests are made to them during the "Downloading public symbols" dialog.
- Getting the symbols into the symbol cache by alternative means (ex, loading from a different symbol server while debugging) worked for avoiding the "Downloading public symbols" dialog for that module.
I have reproduced this issue on VS2013 Update 1, VS2015 Update 3, and VS2017 RC. Interestingly, I believe I had used VS2013 for years without this issue. I think it started a couple of months ago around the time I switched to VS2015.
Does anyone know if this is a known bug, or if there is a way to enable .NET Framework source stepping while disabling this behavior?