- Effective Debugging:软件和系统调试的66个有效方法
- (希)迪欧米迪斯·斯宾奈里斯
- 907字
- 2025-04-17 08:13:10
译者序
十几年前,我看过Spinellis先生所写的《代码阅读》(Code Reading)和《代码质量》(Code Quality)两本书,特别喜欢这种全面讲解编程工作中某个领域的教程,这次又读到同一位作者所写的《Effective Debugging》,感觉依然很精彩。
这是一本在思路和技巧上都较为丰富的调试手册。
从思路方面来说,本书介绍了许多宏观与微观的调试办法。例如,在面对软件故障时,既可以从整体情况入手,进行自上而下的调试,也可以从具体故障入手,进行自下而上的调试,还可以考虑用高级的抽象机制、便捷的程序库、直白的算法、简洁的逻辑,乃至另外一门更为合适的编程语言,对bug繁多的代码进行改写——这些思路,都能在调试工作中给人以启发。
从技巧方面来说,本书介绍了众多的调试工具与手法:有些可以在程序运行之前,设置断点并对表达式与程序的状态做出断言;有些可以在程序运行之中,将各种调试机制与程序进行连接,并对其执行情况进行记录;有些则可以在程序崩溃之后,通过核心转储等信息来还原当时的情境。此外,作者还讲解了如何把这些前置、中置和后置技巧与版本控制系统、静态分析工具、动态分析工具及性能测评工具结合起来使用,以提升调试的效率。
全书的8个大类中含有66条技巧,这些技巧都是围绕着“重现bug——探查bug——解决bug”这一主线而展开的。针对这三个阶段,作者进行了详细的分步讲解,给出了很多实用的范例代码与建议,而且特别强调了如何才能稳定地捕获并重现bug,以便给后面两个阶段打下良好的基础。
本书或许还能促使大家思考另外一个问题,那就是:在修复完bug之后,怎样防止有人向程序中引入类似的bug?这可以从代码质量与测试两方面入手。提高代码质量,能够减少程序员对代码的误解,进而降低引入bug的概率;而对测试进行完善,则能够提前捕获很多问题,从而不会使这些问题逐渐积累成复杂的bug。这些理念,作者在书中也时常会提到。
总之,这是一本可以打开思路并拓宽眼界的书籍,大家不妨在自己惯用的调试环境之外,多尝试一下作者所介绍的其他技法、工具和语言,以求达到旧学与新知的融合。
翻译本书的过程中,我得到了机械工业出版社华章公司诸位编辑和工作人员的帮助,在此深表谢意。
由于译者水平有限,不足与疏漏之处请大家发邮件至eastarstormlee@gmail.com,或访问github.com/jeffreybaoshenlee/debugging-errata/issues留言,给我以批评和指教。
爱飞翔