问题:
在调试代码过程中,计算机突然蓝屏而强制关闭并重启,以至于vs在运行调试的过程中就在非正常的情况下被迫关闭。
重启之后,继续打开并运行项目,却发现无法进行调试代码。于是我把鼠标移到断点的红色图标,有提示:当前不会命中断点,还未为文档加载任何符号”。
文章标题前缀标注了【解决思路】而并非【已解决】。因为导致这个问题的原因是有很多种可能性,并不能确保我提供的解决方案,在每次遇到这个问题时都能够运用得上。但解决思路过程是我写此文的根本目的。
解决过程:
1.
删掉了obj文件和bin文件,重新清理并生成解决方案之后。(首要做法,但未解决)
分析:
- 我以为是上次编译的文件和新编辑的代码不匹配的问题造成的,结果不是这个原因。
- 猜测:有可能是生成PDB文件可能有问题,或者PDB读取器找不到PDB文件。
2.
百度常用到的解决方法统统试了一遍,比如更改调试设置啊,取消勾选“要求源文件与原始版本完全匹配”的选项啊等等,结果还是没法解决掉。(放纵法:未解决)
分析:
- 排除了第一点分析原因的可能性。
3.
试着在vs 2017运行其他几个项目,比如C++项目,WPF项目,结果都是无法断点调试;再在vs 2019环境里编译运行是可以运行的,可以定位到是vs本身的问题,跟项目无关。
分析:
- 猜测是因为蓝屏原因导致强制重启计算机,随即强制关闭正在运行的vs,以至于vs调试功能坏掉了。(排除法,未解决,已大致定位到原因之处)
3.
这次朋友来了兴趣,帮我一起寻找问题,最终看了项目编译之后的输出信息,再跟另外vs 2019编译后的输出信息进行对比,发现了两者列出来的文字描述不一致。
vs 2019正常列出的信息大致如下:
xx......已跳过加载符号。模块进行了优化,并且调试器选项“仅我的代码”已启用。
而vs 2017输出的内容是:
xx....未能加载 PDB 符号读取器。
分析:
- 加载 PDB 符号读取器已经损坏了(写到此处,电脑崩溃死机,已找到问题根源)
- 由于蓝屏强制重启计算机的原因,导致在vs2017运行调试过程中,把加载 PDB 符号读取器弄坏了
4.最终利用VS自带修复工具进行修复,结果是可以成功调试了。(已解决)
5.最后还存在着修复前VS遗留的一个问题,但这并不重要,并不是本文所提到的问题导致的。(因此这点可以忽略掉)
遗留问题:如果有出现过运行项目时弹出需要选择“Debugger调试器“”xxx即时调试“的提示弹窗,在这里可以找到解释和解决方法(删除两个注册表的信息便可):
Debug using the Just-In-Time Debugger - Visual Studio (Windows) | Microsoft Docs
6.修复完VS后,由于重置了vs环境一小部分配置的原因,我的项目出现了小毛病,没法正常跑通。但和本文提到的问题没有一点关系,重新部署应用就好。(忽略这点)
反思总结:
花了三四个小时去解决这个问题,我为此而感到有些不值。但是自己又不想重装VS,因为麻烦,还得重新设置环境,后果也可能重装不好。没办法,只能硬着头皮继续排查下去。除此之外,我很感谢朋友提供了重要的解决思路。
几乎尝试了网上所提供的常见方法,结果用在我这个问题上却是不可行的。然后我又像是无头苍蝇一样,没有认真去找问题的根源,只急于寻求解决方法,也没有想着别人为什么要这么做,这样子就会做很多无用功。
自己解决问题的能力还欠缺,思维还是有些死板的。刚开始时就不应该过于依赖百度出来的解决方案,而是更应该先去找产生问题的根源。
通过这次的经历,我对微软的产品有些失望了,埋的坑确实有点多,也许是因为自身的经验不够吧,再加上平时忙于敲代码,也没心思去捣鼓“和工作无关的事情”。以后肯定还会遇到许多坑的。
这篇文章先记录到这里,目的是为在自己以后工作中遇到相似难题时,提醒自己解决问题时要灵活处理。同时,我也希望能够帮助到正遇这个问题却没法解决的你。
记录于2022.4
参考资料:
vs 2012 调试不了js -- solution 中script document显示不出来_越努力,越幸运的技术博客_51CTO博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)