浅谈:如何复现修复Bug?
对于程序员来说,几乎每个人都与Bug打过交道。
确认了大致的 Bug 范围之后,我们需要尝试在本地复现这个 Bug,由于 Bug 的来源可能不同,我们会有不同的处理方法,如果是来自用户的话,我们需要了解用户在什么情况下会触发这个问题,并且尝试在本地环境中进行相同的操作来复现 Bug,在本地复现 Bug 对于开发而言是非常好的,因为至少可以很明确地知道,那有个 Bug,它真真切切地在那儿。
当然,有的时候可能事与愿违,在本地情况下无法复现这个 Bug,这个时候我们就需要考虑:为啥这个 Bug 在生产环境会有而本地测试环境不会有呢?为了判定 Bug 的源头,我们需要仔细比较本地和生产环境中应用所在环境的差异来获得思路,不过为了保证本地和生产环境中非必需元素(例如:依赖库之类的)相同,可以在开发和部署的环节中引入 Docker 之类的容器化技术,减少人工运维带来的环境不一致导致出 Bug 的可能性。
此外,通过出现 Bug 的时间对比翻看自己的服务器日志也是一个帮助定位 Bug 的方式之一,不过这种方法需要前期在生产环境搭建时就确定好自己的日志系统和格式,以免在需要时发现需要的信息找不到,不需要的信息有很多份的重复,尤其是如果各个服务器都是用了默认配置文件时,这种情况非常容易发生。