在软件行业中,个人觉得每个Coder、Leader(那些当了Leader以后就不需要Code的除外)都应该除了具有良好的编码能力以外,最为 主要的就是Debug的能力要坚实。

千万不要告诉我Debug工作是Tester和QA的事情,首先你要认识到Debug的能力是一个并不简单的能力,能 帮助你提高你的开发能力,加快开发速度,节约开发成本;其次你更应该知道,你所掌握的Debug的能力和技术并不可能抢去Tester或者QA的饭碗,他 们做的工作更仔细、全面,更富有创造力。

由于本人数年来一直使用VC++,所以下面使用的观点和相关的描述都是从VC++出发的,肯定有所偏颇、错误之处,还望 各位看官不吝啬地指出,本人定虚心接受,共同讨论,共同学习,共同进步。个人觉得Debug能力包括以下三个个方面: 
   
  1、良好的编码习惯,良好的逻辑结构能力,对Bug的预见能力。一个成熟的程序员,应该有一个良好的编程习惯,不仅需要有良好的编码格式规范,更为需要的 是对于程序中的逻辑实现时候有一种良好的结构。

   
  2、编码过程中的调试跟踪和错误定位能力。这个能力主要就是在开发过程中,当自己在Build程序,Run起来以后,竟然发生了Bug或者是Memory   Leak,这时候就需要你使用各种工具进行调试跟踪了。
   
  3、对事后发生的Bug能有良好的感知能力。当一个Bug出现的时候,优秀的程序员能根据Bug发生的前提和Bug发生的时间点、程序中的位置,很好的感 知到Bug可能发生在哪一个函数或者哪几个函数中,是什么情况导致Bug的出现的,并且能够很快的定位错误并Fix这个错误。
 
          在以上的三种能力中,第一种能力主要在于态度和思维能力,后两种则偏向于学习能力和经验的积累;个人觉得第一种最为重要,所谓的“态度决定一切”嘛,呵呵。 
   
          最后向你推荐几本关于调试的书籍: 
   
  1、《Writing   Clean   Code——Microsoft   Techniques   for   Developing   Bug-free   C   Programs》(中文版译作《编程精粹——Microsoft编写优质无错C程序秘诀》或者叫做《零错误程序》)——这是一本出版很早的书,现在也许 在书店中都看不到了,但是你要相信此书的作者Steve   Maguire(曾是Microsoft资深的程序员,参加了Excel在多个平台下的开发和移植工作)所提供的许多防错、排错、测试的准则还是能让人从 中获益非浅的。作者将每章的要点都和自己实际工作经历相结合,提供了翔实的例子和相关代码,使用的语言更是幽默风趣,让人读起来不会感觉晦涩难懂,尤其是 每章结束部分提供的练习和思考题更是贴合实际,发人深省。也就是这些原因才使得这本书经久不衰,一直为广大程序所喜爱,所广泛地讨论。至今尚未能见到能与 之相媲美的书籍。网上所流传的林锐博士所著的《高质量C++编程指南》和《软件工程思想》在深度和广度上与之相比也显得逊色不少! 
   
  2、《Debugging   Windows   Programs》(中文版译作《Windows程序调试》,中国电力出版社出版)——这是一本现在在书店很为流行的一本书。此书使用的语言比较朴实、易 懂,也许是译者精心处理的结果,叙述习惯比较符合国人口味。这本书主要包含调试策略、调试工具、调试技术三部分,本书主要介绍的是在VC这个IDE、编译 器下开发程序所应有的一些技术。看完此书你肯定会更为深入的了解MFC,了解结构化异常和C++异常的区别和联系,了解怎么调试多线程程序,怎么调试 COM程序,怎么调试内存,怎么调试绘图程序等等。不管你是自认为有多年的开发经验的开发高手,还是刚刚入门的初学者,相信只要你耐心的看完此书,你一定 会和我一样深深的感叹一句:原来VC的调试功能这么强大!如果早点看到这本书就好了! 
   
  3、《Debugging   Applications》——这本书主要介绍的是VC和VB的调试,其中VC的调试占到70%-80%左右。本书也分为三部 分:Debug的形式,强有力的Debug,Debug的工具和技术。其中有部分内容和上一本书所说的相同。但是这本书还是提供了很多新的东西:介绍了远 程调试,提供了一些新的工具使用例子的说明,介绍了更多的底层的东西,甚至涉及汇编的相关信息的阅读和理解。在阅读了上一本书以后,如果你还想提高,这本 书是你不错的选择。 
   
          第一本书主要就是培养大家第一种Debug能力的,后两本书是培养大家第二种Debug能力的,对于第三种能力主要还是要靠经验的积累。 
   
          程序设 计是一门实践性很强的工作,唯有在工作、实践过程中总结教训,总结经验才能不断提高。祝大家在获得知识,积累经验的过程中少走弯路,大踏步的前进!!!