在大型项目工作期间,很快就会转移到一个已处于维护阶段的项目.最终你手上有一个巨大的代码C/C++代码库,并没有太多关于设计的文档.最后能够给你一些关于代码的知识转移的人已经离开了公司,并且为你的恐怖添加了没有足够的时间来熟悉代码并开发对整体模块的理解.在这种情况下,当你是期望修复模块上的错误(核心转储,功能,性能问题等)你将采取什么方法?
所以问题是:在尝试修复错误时,调试不太熟悉的C/C++代码库的常用步骤是什么?
编辑:Enviornment是Linux,但代码也在Windows上移植,因此对两者的建议都会有所帮助.
Ass*_*vie 20
如果可能,从main()到有问题的区域逐步执行,并按照执行路径执行.在此过程中,您将了解不同部分如何共同发挥作用.
使用静态代码分析工具(如CppDepends甚至Doxygen)来确定模块之间的关系并能够以图形方式查看它们也会很有帮助.
正如其他人已经建议的那样,编写单元测试是进入代码库的好方法.这种方法有许多优点:
它允许您测试您对代码如何工作的假设.添加通过测试证明您对正在测试的那小段代码的假设是正确的.您编写的测试越多,您对代码的理解就越好.
当您修复错误并且知道您已成功完成时,将通过失败的单元测试来重现您要修复的错误.
您编写的单元测试将作为未来的文档.
由于修复了更多错误,因此单元测试您编写的回归测试.
当然,将单元测试添加到遗留代码并不总是一件容易的事.令人高兴的是,一位名叫Michael Feathers的绅士写了一本关于这个主题的优秀书籍,其中包括一些关于在没有单元测试的情况下为代码库添加测试的很好的"食谱".
一些指示:
归档时间: |
|
查看次数: |
2664 次 |
最近记录: |