关于分析阅读源代码:
- 一般地系统性的,可以从源代码的说明文档开始,即README,作者写的非常的详细;
- 一般地,源代码回有文档目录,一般为PDF,在阅读源程序之前仔细阅读;
- 若能力比较强的,可以从makefile入手,分析源代码的层次结构,找出哪个是主程序,哪些是函数包;
- 从main函数入手,一步步的往下阅读,遇到可以猜测出来意思的简单函数,可以跳过,但是要注意的是程序中使用的全局变量,可以把关键的数据结构说明拷贝到一个文本编辑器以便随时查找.先把程序的流程和整体框架搞懂一点,明白一些函数大概是实现什么功能就可以,现在不要过多的关注和沉迷在功能模块的实现细节上,当需要定位到具体的某个功能实现模块的时候,在切换到函数实现中一点点分析代码就OK.如果,对某个地方不太清楚,可以自己修改下源代码,运行一下看看结果怎样,故而最好备份!
- 分析函数包,要注意哪些是全局函数,哪些是内部使用的函数,注意extern关键字.分析内部函数,外部函数,因为内部函数肯定是在外部函数中被调用的;
- 数据结构的重要性,对于一个C程序来说,所有的函数都在操作同一些数据,而由于没有较好的封装性,这些数据可能出现在程序的任何地方,被任何函数修改,所以一定要注意这些数据的定义和意义,也要注意是哪些函数使用并改变了这些数据,注意多线程对数据的操作;
- 阅读程序的同时,最好源代码的备份.需要的时候对源代码进行一个修改实验,因为动手修改是比仅仅是阅读要好得多得多的分析程序的方法;
- 阅读程序的同时,注意小工具的使用,比如查找功能