如何快速debug

在程序开发过程中debug是一个很基本的技能,普通开发中常见的bug主要有两种形式,一种是程序本身错误,例如语法错误等,这种bug相对来说容易调试些,在开发环境打开调试模式一般较容易定位到程序的错误位置,另一种是业务逻辑有错误,这种bug相对来说比较隐蔽,因为程序本身没有错误能正常运行,但是程序的运行结果没有实现我们的预期结果,今天我们通过一个实例来谈谈业务逻辑bug的调试。

先简单介绍下实例场景,在线学习平台要实现学生的学习统计报告,主要统计学生到课时间、学习时长、答题等记录信息,这些数据从产生到展示由两部分组成,一部分是由相关脚本在视频播放页面实时记录学生在线学习的基础数据并保存到数据库,另一部分是在课程结束后根据前一部分提供的基础数据来统计分析学生在线学习的学习情况,包含准时到课、迟到、答题准确率、记笔记等统计数据。现在出现的问题是,学生准时到课且参与了课堂答题,课程结束后统计报告中显示的是该学生未上课,但同时有答题记录和观看直播时长的数据。

这个案例中的问题基本上断定为业务逻辑问题了,因为既然有数据且部分数据是正确的说明程序应该没有问题能够正常运行。应该再进一步排查,首先从源头上排查,确认前一部分提供的基础数据中是否有问题,基础数据中有该学生准时上课的记录,即推断问题应该是在后部分对基础数据分析统计时出了问题。由于统计的数据只是到课状态这个数据有错误,其他如答题、观看直播时长等数据均没有问题,那就直接定位到程序中判断到课状态的业务逻辑中来,结果证明确实是判断到课状态时出现了问题,且通过查看提交日志发现这个逻辑错误是最近一次提交代码产生的,因此也可以通过代码提交记录来快速定位具体问题,如果一个程序已经稳定运行过一段时间突然在某天出现了问题,可以优先通过查看提交记录来排查问题。

这是一个真实的案例,写下这篇文章当做一个总结,当遇到一些比较隐蔽的业务逻辑bug时,首先需要了解业务场景并熟悉相关的业务逻辑,然后从业务上定位问题,最后再去到代码里去排查具体问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G1IPS100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券