正确可行的调试技巧在软件开发中是如此重要,奇怪的是,这个事实在多数开发者那里并未引起足够的重视,也许是“Debug”更多时候是和“Reverse Engineering”这个神秘的名词画上等号而显得高深莫测,使得一般的开发人员和初学者望而生畏踟蹰不前。其实在日常的开发中,调试技术使用非常普遍――当一段代码编写完成,在合适的地方设下断点,启动调试器,等待程序运行到断点处,查看运行流程和相关变量是否符合预期;或是为了修正程序中存在的逻辑上的BUG,使用调试器进行逐句跟踪,寻找引发错误的关键点――这些都是最常见的调试工作,但也只是调试技巧的简单应用。与其说是“调试”,倒不如说是“测试”,以调试技术来实施单元测试,未免有些大材小用。在我看来,“现场分析”、“状态回溯”、“事后调试”之类的技术才更加接近调试的精髓。所谓“调试技术”,就是分析归纳的技术。它引导你从程序崩溃的废墟中一点一滴地搜集蛛丝马迹,再从中抽丝剥茧归纳整理,依靠有预见性的想象和符合事实的推理,从而还原出一个真实的错误景象。
最近收到了一本机械工业出版社出版的《Windows高级调试》,原以为是给分析人员使用的工具用书,仔细翻阅了几章,却发现并非如此。在这本书中,作者针对一般的开发人员和测试人员,深入探讨了调试技术的“高级”应用。书中通过融入一个个实例当中的调试过程和技巧,由浅入深地讲解操作系统的内部运行机制和调试的基本原理。深入阅读,你会发现Debug不再是hacker手中的“奇技淫巧”,而是软件开发过程中的有力工具。对于有经验的分析人员,这本书同样值得一读。相信书内详尽的描述和深入的分析能够印证你对操作系统底层构架的理解,并在调试技术上予以新的启发。
(《Windows高级调试》,[美]Mario Hewardt;Daniel Pravat著,聂雪军译,机械工业出版社,2009年6月,79.00元)