如何使Visual Studio 2015适配微软2019年符号服务器升级?
问题描述
从2019年底开始,Windows 7系统上的VS2015 IDE在启动调试时,出现了无法从微软符号服务器获取PDB文件的异常。具体表现为:原本请求的PDB地址(比如http://msdl.microsoft.com/download/symbols/wntdll.pdb/E611E9E16BA54434A45EB38CE9217A792/wntdll.pdb)会被重定向到HTTPS协议的Azure Blob存储地址(类似https://vsblobprodscussu5shard65.blob.core.windows.net/b-4712e...),但带Update 3的旧版VS2015调试器不支持HTTP到HTTPS的跨协议重定向,触发错误ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR。
原因分析
这个问题的根源是微软对符号服务器的后端基础设施进行了升级,把原来基于HTTP的符号存储迁移到了HTTPS协议的Azure Blob服务,但旧版VS2015 Update 3的调试器组件没有适配这种跨协议重定向的逻辑。
可行解决方案
1. 用新版WinDbg预下载符号(临时替代)
虽然日常调试主要在VS2015中进行,但可以借助EWDK 1903里的新版windbg.exe预先下载系统DLL的符号,再让VS2015使用本地缓存:
- 打开新版WinDbg,通过
File > Symbol File Path设置符号路径为srv*C:\本地符号缓存目录*https://msdl.microsoft.com/download/symbols - 加载目标进程或DLL,等待符号下载完成
- 打开VS2015的
工具 > 选项 > 调试 > 符号,添加刚才的本地符号目录,并将其移到优先级最高的位置
2. 直接让VS2015使用HTTPS符号服务器
跳过HTTP到HTTPS的重定向,直接把VS2015的符号服务器地址改成HTTPS版本:
- 进入VS2015的
工具 > 选项 > 调试 > 符号 - 把原有的
http://msdl.microsoft.com/download/symbols替换为https://msdl.microsoft.com/download/symbols - 清理现有的符号缓存,重启VS2015后重试调试
3. 等待后台配置变更(已验证有效)
根据2020.04.20的更新反馈,有用户在反复切换VS2015和WinDbg约一小时后,VS2015的PDB下载功能突然恢复正常。推测微软后台对符号服务器的重定向逻辑做了未知调整,让旧版VS2015可以正常获取符号。如果上述方案无效,可以尝试多次重启VS2015、清理符号缓存,或者等待一段时间再重试。
内容的提问来源于stack exchange,提问作者Jimm Chen

