所有开发者都有一样的通病:即不承认是自己的代码出了问题, 会从其他地方找原因。
而事实上,编译器,OS,中间件,数据库等造成代码出现bug的可能性极小。如果这些工具,系统被大规模使用,被应用到各种技术栈,几乎无理由怀疑其质量。当然,如果是早期预览版或应用群体范围小,或下载量少,或者是alpha版本有理由怀疑其质量。
考虑到编译器,中间件,数据库等错误非常罕见,当出现bug时最好将精力放在自己的代码上,做好问题隔离,做全单体测试;检查调用约定,共享库和版本号;检查栈调用异常和变量类型是否匹配;在不同的机器上编译代码。
当出现多线程问题时,非常难以排查。当一个系统是多线程时最好的建议就是简化代码。调试和单体测试在线程一致性问题上作用不大。
小结
当系统出现问题时,首先要把精力放在自己的代码上,大概率是自己的问题。