来源:http://blog.csdn.net/lezhiyong
早些年刚毕业时候,干过一小段时间的电子设备维护,后干上了软件开发,回顾起来,两者也有很多相似的地方。正所谓方法是相通的,只是用的地方不一样而已;不管做什么事情,学会使用方法是最重要的。
那时候修机器首先第一步就是熟悉设备,需要看设备使用说明书并了解设备运行原理,最高境界是需要要让设备的传动、电路、油路、气路都可用在自己的大脑中run起来。同样,程序bug修改的基本要求,跟起何其相似,需要熟悉程序的源代码与开发设计文档,如果能做到让程序每个模块每个信令流和数据流以及线程进程在自己大脑中运行起来,那么对该软件也很熟悉了,解什么bug也都轻而易举。
修机器的第二步,当然就是熟练运用万用表、示波器等工具提取故障设备状况的很多信息,同时结合设备电流电压表等指示器获取设备输出详细信息,有了这些信息,可以了解到设备的运行状态和问题所在。修改软件的bug同样如此,当软件bug出来后,举个例子我们可以用各种工具获取软件的bump信息,dll调用信息等了解软件运行状况,如果软件有日志输出,它就是设备的电流电压表或者设备信息记录仪保存着软件运行的宝贵信息,对bug定位帮助很大。
修机器的第三步,就是定位问题发生的地方了,对于维护人员,定位到小电器或大电器的电路板基本就解决问题了。一个简单的定位方法就是用好的模块将可疑模块换上,如果设备恢复正常,那么我们就可以在这个模块再用上述方法迭代去更准确的定位问题模块。对于软件bug,特别是成熟产品的bug出来后,最好先从软件运行的环境配置、网络状况、文件版本等宏观大范围去判断,不要一开始就钻到代码中试图调试代码去解决问题。一时定位不准的bug,换个运行环境看看软件是否恢复正常?将模块逐个退回上个版本,看看是否能恢复正常?这同样是一个从粗到细的定位问题过程,直至找到问题发生模块。