软件调试前的准备工作
在我们对某个问题进行调试前一定要做足准备工作,不然后面的调试工作会面临极大的困难,甚至都无法开展调试工作。
必须要做的准备工作
不管我们是在开发期调试,还是在发布后调试,都要做好如下准备工作:
- 充足的心里准备
这个太重要了,在实际工作中,我见到太多被问题吓怕的人。在还没整清楚问题是什么时就已经打了退堂鼓,把工作和问题给别人。面对任何问题,我们首先要做的就是树立起信心。特别是在计算机的世界里,事出必有因,且一定具有事情的发生的必然逻辑。所以,我们只要有信心就肯定能解决问题。 - 编写高质量代码
程序开发者应该提供高质量的程序代码,包括规 范的代码和必要的注释,对开发的代码进行单元测试, 经过同行严格的代码评审。 这样一是减少问题发生,二是对调试定位问题和问题修改有很大的帮助。 - 了解软件的设计和算法,熟悉软件代码
调试一个软件模块,需要了解它的设计和实现算 法,了解各个函数之间的调用关系,该模块与其他模块 之间的接口关系。 - 熟悉软件运行环境
首先要明白我们软件要求的运行环境。了解用户机的环境,是否满足软件运行要求,排除一些运行环境引起的软件异常。同时随着硬件、操作系统、网络技术、云技术、大数据技术的发展,软件 运行环境越来越复杂,调试者只有熟悉这些环境和环 境配置,才能保证软件正常运行和调试。 - 熟悉调试工具
调试工具提供很多功能来帮助我们调试分析程序,只有熟练掌握调试工具,才能开展我们的调试工作。 - 足够的日志输出
日志的作用不用我多说,如果日志有足够的信息,我们甚至都可以不用调试器,都能定位问题和解决问题。 - 知道用户的操作流程
某些问题更用户的独特使用习惯和操作步骤有关,如果我们不知道,很有可能复现不了问题从而无法解决。
开发过程中的调试准备工作
还在软件的开发过程中,我们就会遇到许多问题和异常,为了解决这些问题,我们需要做如下准备工作:
- 了解我们的工程属性配置
要知道我们的工程属性做了哪些配置,特别是一些特殊的配置,最好知道没一个配置选项对我们程序行为的影响。要知道发生问题前配置有没有做修改,为什么修改。 - 知道代码组织结构
只有知道代码组织结构,我们才能快速定位代码 - 准备充分必要的数据
相当一部分问题可能是数据引起,我们只有有这样的问题数据,才能引发问题和调试定位问题。 - 了解代码里使用的第三方库的原理和使用要求
如果不知道,可能会发生一些莫名其妙的问题,让我们无从下手。
软件发布后问题的调试准备工作
我们在开发时,严格尊搜了代码规范,进行了单元测试,也进行了组织内部的严格测试,但是,当我们的软件发布,功能上线后,用户还是会反馈很多问题,有的问题还非常致命。为了调试这些问题,我们要做如下准备工作:
- 做好代码发布分支管理
- 准被好符号文件
如果是Windows上C++/.net开发的,一定要生成好符号文件,甚至是Map文件,且要做好符号版本管理 - 做好发布包版本管理
- 充分收集用户的相关信息
应用版本、操作系统、硬件信息,使用流程、日志、注册表等一切相关信息