如何阅读源代码--工具篇在上一篇文章(<<如何阅读源代码>>(http://www.linuxaid.com.cn/developer/showdev.jsp?i=469))中, 我讲述了一些如何阅读GNU,Open Source源代码的原则,经验和技巧。上次曾经提到,有一些工具能够帮助我们更加快速,准确,有效的阅读源代码,掌握其结构。在这一篇文章中我将具体介绍几个工具,帮助我们阅读,分析源代码。 首先要介绍的工具叫做ctags. 这个工具在Unix下是一个常用的分析静态程序的工具,相信大家都用过。如果你对这个工具不熟悉,也不要紧。相信很多人都用过Windows系统下的开发工具,很多图形化界面的开发工具,诸如Visual C++, C++ Builder的IDE开发环境都提供了一种功能,就是在编辑器中可以准确的定位一个函数或者一个类的申明,或者实现,或者列出所有的在程序中调用该函数的地方。这种功能给程序员和阅读程序的人提供了很大的方便,不用在庞大的程序文本中到处搜寻一个字符串,只要轻轻的点一下鼠标就能准确的找到要找的东西。其实,Unix/Linux也有这样的工具,而且,继承了Unix程序小巧,精炼,功能强大,容易配合其它程序使用的特点,比Visual C++, C++ Builder的IDE环境更加方便实用,而且,还没有它们那么庞大。ctags结合vi,就是这么一个工具。 先来看看在Unix下,ctags的功能。我用的是HP UX。有这么一个小程序,是用来解释ctags的用法的。
这个文件有三栏: 1、tag的名称,可以在稍后通过引用它来定位光标。 2、文件的名称。这个文件是tag所在的文件的名称。 3、搜索的方法。在我的系统上,ctags是用正则表达式的方式来搜索定位的。如何使用这个tags文件呢? 我们以vi为例子来展示它的功能。vi是一个强大的文本编辑器,它的简洁的操作和强大的功能使它成为了Unix平台上的最流行的编辑器之一。ctags支持vi的功能。使用方法很简单。如果我们要定位main()函数,只要$vi -t Mtest vi自动的打开了test.c文件,然后把光标定位到main()函数的开头处。在vi中,如果要使用其它的tag来定位别的函数,也只要使用:ta tag命令就可以了。比如在本例中,我们要定位f函数。那么,只要用 :ta f 光标就自动定位到f()函数的入口处。很简单吧? 在Linux下,也可以找到ctags. 一般的Linux发行版都包括了这个工具。如果你的系统上没有ctags, 也可以到http://ctags.sourceforge.net/下载它。它的作者是Darren Hiebert Linux下的ctags比Unix下的ctags功能更加强大,而且更加可以定制。Unix下的ctags(我的系统上是这样)只支持三种语言:C, Pascal, Fortran, 而Linux下的ctags支持的语言有:Assembler, AWK, BETA, Bourne shell, C/C++, COBOL, Eiffel, Fortran, Java, Lisp, Perl, Python, Scheme, Tcl. 而且Linux下的ctags支持的编辑器也很多,有:vi 和它的派生Vim, Vile, Lemmy, CRiSP, emacs, FTE (Folding Text Editor), NEdit (Nirvana Edit), TSE (The SemWare Editor), X2, Zeus. 好,现在就让我们来看一看ctags的强大功能以及它在阅读源代码的时候的用处吧。我将仍然以webalizer为例子,因为这个程序是在上一篇文章<<如何阅读源代码>>中使用过的,为了一贯性,也为了读者能够通过本文的阅读从而更加的了解这个程序和学到更多的经验技巧。考虑一下,当我们拿到一个C程序,我们如何能够快速的掌握它的结构呢?C程序是由一系列的函数,变量,宏,预编译指令组成的。而我们最为关心的是函数,和全局变量。那好,用ctags可以很方便的得到我们感兴趣的东西。 以webalizer的主程序webalizer.c为例子,我们可以用:
得到的结果如下
在输出中可以看到所有的在webalizer.c中的函数,出现的行号,和它们的申明。方便吧?(当然,仅仅这样是不能读通源代码的,还是需要上一篇文章中的原则和技巧才能实际的读懂源代码。这个只是一个辅助工具,能够让我们更加方便快速准确而已)。要看函数的原型也很简单: 上一篇:Linux C编程---进程 下一篇:LInux 应用程序如何处理当前运行环境的环境变量 更多相关文章
|
推荐文章
精彩文章
|