预计所需阅读时间:5分钟

这时已经到了7月下旬,思前想后,决定重装Win10系统,装旧的驱动,软件也慢慢装,这样,就可以慢慢把问题的地方找出来。重装之后,发生了一个插曲,那天下午装完系统,赶着走,于是点了“睡眠”合上盖就走了。笔记本电脑放在背包一直很热,结果晚上回来开电脑,发现固态硬盘识别不了,于是找硬盘商家换盘。这个新买的固态盘算是烧坏了。后来,在B站发现有个留学生带了个ITX机箱去美国读博士,发现电源散热会将热风吹到固态硬盘上,所有数据都被报废。这两天多的时间,用回原来的固态硬盘的系统。问题依旧,所以那时觉得还是系统与驱动的兼容性问题。换盘后,再次把原来固态分区克隆到新盘的分区,那就等于我没有重装,而是继承原来的系统。

心想还是以编程为重,能勉强用就勉强用吧。到了8月上旬才真正重装系统,安装旧系统,只装少量编程支持的环境。新系统一开始也是没什么问题,后来还是几个小时或几分钟就会出现问题。8月上旬是我一门微专业的最后一次考核,这时我决定把重要的事先做了,不考虑Windows系统的蓝屏问题。于是在Ubuntu系统,完成特征工程、机器学习和数据预测这三个重要部分,期间只有两次jupyter lab网页崩溃影响机器学习的计算。

这时已经是8月下旬了,在B站上发现有发了个Windows 10 build 19041(20H1)版本各种蓝屏崩溃的视频,崩溃提示跟我的一样。于是立即下决心重装回Win10 19H2的版本。这次我信心满满,一下子就把所以影响系统的重要软件装进去,新的驱动、所有后台软件、各种编程环境都装到系统中。然而,不到一天就被1909版本系统蓝屏打脸。之后那几天的精神状态比较差,没有稳定的开发环境,被蓝屏烦扰,很难对一些算法和模型有深入研究。

这时,算是到了心如死灰的状态,买台新的电脑固然爽,但也只是一时,问题没有解决还是不会放下心里的石头。之后那几天开始找绿色软件把原来的替换掉,因为想到无论要不要回退更早的版本也是要用这些软件的。到这里,我也排除了是Windows系统版本的问题,确实很无解。在这“山穷水尽疑无路”之际,我又重新想这个蓝屏的问题,会不会还是硬件的问题呢?

笔记本电脑绝大部分主板是与CPU、GPU和显存焊接在一块,CPU、GPU是最精密的电元器件,一旦坏了一定是开不了机,个人和维修商家都无法修好。电脑能开机,我还相信主板是被修好的,而且我不能用排列法换主板。那么还有内存、硬盘、无线网卡没有被排除。首先是内存,之前做过两次内存检测,一直相信四条内存是好的。但是测试也不算多,商家也不一定全测过内存,因为他第一次发来的视频只用了一根他们内存做测试,所以这让我觉得即使我寄整机过去也没有针对单项做测试,只是关心主板稳不稳。之前我一直把四条共32G内存当成一个整体,现在要分开来看哪一条或哪几条有问题。我先把原配旧的内存拆掉,保留两条后来买的。新一次开机出现蓝屏,当是偶然,第二次开机半个小时内出现蓝屏,于是马上换两条旧的原装内存,开机一小时没什么问题,于是我继续装各种软件,设置电脑,这时心里也慢慢稳定下来。问题出在两条后来加的内存上,可能是一条也可能是两条坏了。前天,把其中一条内存插上,在出现第二次蓝屏的时候,立即换成另一条。最后结果从前天下午运行到现在,没有任何蓝屏,系统版本也从19H2升级到20H2,用三条内存组成的双通道运行,依然很稳定。

这样条问题内存我找了很久才发现它,因为用Ubuntu系统没有崩溃过。它可只是某几个内存地址坏了,因为软件用到这几个坏地址也只是程序崩溃,而Windows的核心进程和核心驱动用到这几个地址才出现蓝屏,没去掉问题内存前,可以连续运行两天没事,也可以开机两分钟就崩溃,这几个内存地址像玄学般的存在,而系统蓝屏更像是“薛定谔的猫”的存在。这样看来,Ubuntu系统的核心进程对内存使用再加稳定,而不是随机使用,因为它没有用到坏的地址,所以Ubuntu不崩溃,程序用到了也就程序崩溃,对内存的使用感觉比Windows克制许多。

总结这个三个月的维修经验,这对我的Debug技能有了很大的提升,这两天的编程已经很快通过Debug打断点找到问题所在,现在觉得通过官方文档、英文搜索引擎和断点调试,能解决所有初级和中级的编程问题:

1.不要完全相信网上维修商家的话,他们会把电脑修好,但也只是仅仅刚好而已。而且,第二次寄回给我的主板,从我涂的散热硅胶的痕迹来看,是自己原来的主板。维修主板的显存,加换新板要1100元,我算是接受。如果只是维修主板,那1100元那也太贵了。这种有信息不对称的行业里,商家还是奸的,从而赚更多的钱。

2.排除法是解决电脑问题最好的办法,包括编程也一样。而好的排除法,是按配件或组件的重要程度去排列。如果排除法走完一遍都没有解决问题,那么就再用一次排除法。第二次的排除法,要重新检查是否有遗漏的地方,要扩展原来的视野范围,同时,在Debug的过程中,要一点一点细致的排除。

回看上篇