如何阅读c语言较大型工程的源码?
最近在读tcpdump的源码,学习其架构、业务逻辑,用的工具是source insight,在linux下wine的,功能上应该没问题。
我的方法是从main函数开始读,遇到函数、变量就去查相应的定义,基本是按照程序的执行顺序来读的。遇到以下几个问题,求助:
1.source insight查定义非常方便,但是查找某个变量的使用情况就不太好用了,毕竟如果一个变量用的比较频繁,想确定具体是在哪里改变的就不太容易,目前我是通过gdb跟踪来确定的,不过这样也挺麻烦,各位有没有什么比较方便的方法?举个例子,tcpdump可以接收挺多的参数,好多参数都有可能影响到callback这个变量,我想知道在某个语句里callback变量的值是在哪句赋的,有没有什么简便的方法来确定?
2.tcpdump里有很多#ifdef...#elif...#endif这种宏定义,有些平台的代码我不需要看(我只需要看linux下的,其它各种unix平台的都不需要看),这些代码都带着的话看起来不太方便,有的代码段太长了,翻起来麻烦,有没有什么简便的方法把这些代码段去除?
3.阅读c++代码时可以用uml记录,c的工程呢?难道要画流程图?不记录下的话很容易忘……