WEB开发网
开发学院网络安全黑客技术 如何阅读源代码 阅读

如何阅读源代码

 2006-07-04 20:27:49 来源:WEB开发网   
核心提示: 好了,不用再往下看了,如何阅读源代码(4),这些就已经足够了,从这里我们可以看到这个软件的几个源代码文件和他们的结构,我们看到:/* initalize epoch */ epoch=jdate(1,1,1970); /* used for timestamp adj. *//* add

好了,不用再往下看了,这些就已经足够了。从这里我们可以看到这个软件的几个源代码文件和他们的结构。webalizer.c是主程序所在的文件,其他的是一些辅助程序模块。对比一下目录里面的文件,

$ ls *.c *.h
dns_resolv.c graphs.h lang.h output.c parser.h webalizer.c
dns_resolv.h hashtab.c linklist.c output.h preserve.c webalizer.h
graphs.c hashtab.h linklist.h parser.c preserve.h webalizer_lang.h

于是,让我们从webalizer.c开始吧。

作为一个C程序,在头文件里面,和C文件里面定义的extern变量,结构等等肯定不会少,但是,单独看这些东西我们不可能对这个程序有什么认识。所以,从main函数入手,逐步分析,在需要的时候再回头来看这些数据结构定义才是好的方法。(顺便说一句,Visual C++, 等windows下的IDE工具提供了很方便的方法来获取函数列表,C++的类列表以及资源文件,对于阅读源代码很有帮助。Unix/Linux也有这些工具,但是,我们在这里暂时不说,而只是通过最简单的文本编辑器vi来讲)。跳过webalizer.c开头的版权说明部分(GPL的),和数据结构定义,全局变量声明部分,直接进入main()函数。在函数开头,我们看到:

/* initalize epoch */
  epoch=jdate(1,1,1970); /* used for timestamp adj. */
/* add default index. alias */
  add_nlist("index.",&index_alias);

这两个函数暂时不用仔细看,后面会提到,略过。

sprintf(tmp_buf,"%s/webalizer.conf",ETCDIR);
  /* check for default config file */
if (!access("webalizer.conf",F_OK))
get_config("webalizer.conf");
  else if (!access(tmp_buf,F_OK))
  get_config(tmp_buf);

上一页  1 2 3 4 

Tags:如何 阅读 源代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接