先看日志走到第几句
有个程序卡在"连接中"不动。我第一反应是网络出问题, 于是去翻网关那一层的代码,查超时、查重连、查证书,翻了一个多小时。
后来才想起看日志。日志停在启动流程的第二句—— 也就是说它压根没走到连接那一步。我查的那一整个小时, 查的是一段根本没被执行到的代码。
症状出现的位置,不等于问题发生的位置
"连接中"这个状态是点下按钮那一刻就写上去的,它不代表程序真的在连。 同理,一个报错出现在第 300 行,不代表问题出在第 300 行—— 很可能是第 20 行埋下的,只是到第 300 行才炸出来。
所以现在遇到问题,我第一件事固定是问:它走到哪儿了? 不是"哪里报错",是"最后一句成功的日志是什么"。 这两个位置之间那段,才是要查的范围。
顺带一条:别信自己的猜测,去验
上面那次我一开始有个很合理的猜测,合理到我直接当成了事实去查。 如果当时花十秒钟看一眼日志,就能立刻推翻它。
合理的猜测最危险,因为它不会让你觉得需要验证。
现在我尽量做到:凡是要动手查的方向,先花一分钟确认它成立。
一分钟换一小时,很划算。