Effective Debugging——通用的方法与做法

相信自己能够把问题调试好

  • 确信问题是可以追查并解决的
  • 给调试工作留出足够的时间
  • 安排好工作环境,是自己不受干扰
  • 遇到难题的时候可以先睡一觉
  • 不要彻底放弃
  • 投入精力去学习环境、工具及知识

高效地重现程序中的问题

  • 如果能够准确重现程序中的问题,那么我们的调试过程就得以简化
  • 创建一个简短且自足的范例,以便重现程序中的问题
  • 设法创建一套可以制作副本的执行环境
  • 采用版本控制系统给特定的软件版本打上标记,以便根据此标记来获取与之对应的代码

修改完代码后,要能够尽快看到结果

  • 设法在修改代码之后尽快看到其结果,以提升调试的效率
  • 配置一套快速的自动化的构建及部署流程
  • 测试软件时,要令其尽快地将故障暴露出来

将复杂的测试场景自动化

  • 通过脚本语言来自动执行复杂的测试用例

使自己尽可能多地观察到与调试有关的数据

  • 如果能够同时看到比较多地数据,那我们就可以更加专注的进行调试,从而找到数据所体现出的模式以及数据之间的相互关系
  • 尽可能地将显示区域扩至最大
  • 把相对静态的数据打印到纸上

考虑对软件进行更新

  • 在软件更新之后的环境里面重新尝试你所编写的代码,看看这次会不会出错
  • 不要对更新软件所带来的效果抱有过高的期望
  • 要考虑因第三方组件而引发bug的可能性

查看第三方组件源代码,以了解其用法

  • 如果你依赖某个第三方组件,那么i、就应该获取其源代码
  • 通过查看第三方组件的源代码探寻与第三方API及一些奇怪的错误消息有关的问题。
  • 要和第三方程序库的debug版本相链接
  • 只有当其他办法都不可行的时候,才需要对第三方的源代码进行修改

使用专门的监测及测试设备

  • 逻辑分析器、总线分析器或协议分析器可以帮助你锁定接近于硬件层面的问题
  • 可以通过自制的设备来探查与硬件有关的问题
  • 可以通过将wireshark与以太网集线器相结合、使用管理型交换机或进行命令行捕获等办法来监测网络数据包

使故障更加突出

  • 迫使软件去执行那些可疑的路径
  • 提升某些效果的幅度,令其变得更加突出,以便于我们进行研究
  • 对软件加压,迫使它走出能够从容应对负载的那种舒适状态
  • 在版本管理系统中临时创建一个分支,并把所有的修改都放在这个分支上来做。

从自己的桌面计算机上调试那些不太好用的系统

  • 把设备模拟器配置好,以便通过计算机屏幕和键盘来调试移动app
  • 搭建shim机制,以便使用自己计算机中的工具来调试嵌入式代码
  • 为远程访问做好准备,以便能够远程调试客户的计算机
  • 配置KVM over IP设备,以便调试远程服务器上面的问题

使调试任务自动化

  • 把寻找程序故障的过程自动化,使得计算机多费一些功夫去搜寻,从而节省你自己的宝贵时间

开始调试之前与调试完毕之后都要把程序清理干净

  • 在开始调试重大的bug之前,先要确保代码能够达到一定的整洁程度
  • 调试完毕之后,要把调试过程中对代码所做的临时改动还原回去,并且要把那些有用的代码提交到代码库。

把属于同一个类型的所有问题全都修复好

  • 修复了某一个错误之后,我们还需要寻找并解决其他相似的错误,并设法保证将来不会再出现此类错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值