阅读源码工具介绍

 介绍了几种常见的源代码阅读工具,包括常见的sourceinsight。html

BBS 泉韵心声站 -- 文章阅读 [讨论区: BBS]node

[分类讨论区] [所有讨论区] [返回版面] [返回文摘区] [快速返回] 
--------------------------------------------------------------------------------
发信人: tian.bbs@bbs.tju.edu.cn.no.spam ( 专 ), 信区: BBS
标 题: [转载] 阅读源代码的工具介绍
发信站: 天大求实BBS站 (Wed Jul 7 22:14:55 2004)
转信站: SDU!netnews.sdu.edu.cn!news2.happynet.org!TJUBBSlinux

【 如下文字转载自 Linux 讨论区 】
【 原文由 xiaoq.bbs@bbs.cqupt.edu.cn 所发表 】
阅读象Linux代码这样的复杂程序使人望而生畏。 
它象一个越滚越大的雪球,阅读某个部分常常要用到好几个其余的相关文件, 
不久你将会忘记你原来在干什么。因此没有一个好的工具是不行的。 

我接触过如下这样3个工具: 

1,SourceInsight 
这是一个Windows环境下的读代码的工具 
安装与通常的软件没有什么区别 
它的使用简单介绍以下: 
先选择Project菜单下的new,新建一个工程,输入工程名, 
接着要求你把欲读的源代码加入(能够整个目录加)后,该软件就分析你所加的源代码。 
分析完后,就能够进行阅读了。 
对于打开的阅读文件,若是想看某一变量的定义, 
先把光标定位于该变量,而后点击工具条上的相应选项,该变量的定义就显示出来。 
对于函数的定义与实现也能够一样操做。 

就我我的的使用感受,整体来说,使用是很方便的,可是有一些定义会找不到, 
不知道是我本身的缘由(好比设置不对,或者源代码没有找全),仍是软件自己能力有限。 

2,SourceNavigator 
RedHat出的一个Linux环境下的读码工具 
感受功能比SourceInsight强,可是速度很慢。 
就安装来讲,由于要给全部的文件创建索引,要花费很长的时间 
我给Linux内核创建完整的一个工程,至少要2—3个小时 
并且X的效率毕竟不如Windows,运行时的速度也比较慢。 

3,LXR 
LXR(Linux Cross Reference),是一个通用的超文本cross-reference工具。 
详细介绍见下面这篇文章: 

《阅读linux源代码的工具---lxr和glimpse简介》 
---做者: sea_cloud - China Linux Forum中国Linux论坛首页技术论坛| 


咱们在阅读linux源代码时都有这样的体会:核心的组织相对松散, 
在看一个文件时每每要牵涉到其余的头文件、源代码文件。如此来回 
跳转寻找变量、常量、函数的定义十分不方便,这样折腾几回,便使 
读代码的心情降到了低点。 

lxr(linux cross reference)就是一个解决这个问题的工具:他对 
你指定的源代码文件创建索引数据库,利用perl脚本CGI动态生成包含 
源码的web页面,你能够用任何一种浏览器查阅。在此web页中,全部 
的变量、常量、函数都以超链接的形式给出,十分方便查阅。好比你 
在阅读/usr/src/linux/net/socket.c的源代码,发现函数 
get_empty_inode不知道是如何以及在哪里定义的,这时候你只要点击 
get_empty_inode,lxr将返回此函数的定义、实现以及各次引用是在什 
么文件的哪一行,注意,这些信息也是超链接,点击将直接跳转到相应 
的文件相应的行。另外lxr还提供标识符搜索、文件搜索,结合程序 
glimpse还能够提供对全部的源码文件进行全文检索,甚至包括注释! 

下面将结合实例介绍一下lxr和glimpse的基本安装和使用,因为 
glimpse比较简单,就从它开始: 


首先访问站点:http://glimpse.cs.arizona.edu/ 获得glimpse 
的源码,好比我获得的是glimpse-4.12.5.tar.gz . 用root登陆,在 
任一目录下用tar zxvf glimpse-4.12.5.tar.gz解开压缩包,在当前 
目录下出现新目录glimpse-4.12.5 .进入该目录,执行make便可。进 
入bin目录,将文件glimpse和glimpseindex拷贝到/bin或/usr/bin下 
便可。若是单独使用glimpse,那么只要简单的执行glimpseindex foo 
便可,其中foo是你想要索引的目录,好比说是/usr/src/linux .glimpseindex 
的执行结果是在你的起始目录下产生若干.glimpse*的索引文件。而后 
你只要执行glimpse yourstring便可查找/usr/src/linux下全部包含 
字符串yourstring的文件。 

对于lxr,你能够访问lxr.linux.no获得它的源代码解包后,遵循以下步骤: 

/*下面的文字来源于lxr的帮助文档以及本人的安装体会*/ 

1)修改Makefile中的变量PERLBIN和INSTALLPREFIX,使它们分别为 
perl程序的位置和你想lxr安装的位置.在个人机器上,PERLBIN的值为 
/usr/bin/perl .至于INSTALLPREFIX,有以下原则,lxr的安装路径 
必须是web服务器能有权限访问。所以它的值简单一点可取 
/home/httpd/html/lxr (对于Apache web server)。 

2)执行 make install 

3)修改$INSTALLPREFIX/http/lxr.conf : 
baseurl : http://yourIP/lxr/http/ 
htmlhead: /home/httpd/html/lxr/http/template-head 
htmltail: /home/httpd/html/lxr/http/template-tail 
htmldir: /home/httpd/html/lxr/http/template-dir 
sourceroot : /usr/src/linux # 假如对linux核心代码索引 
dbdir : /home/httpd/html/lxr/dbdir/ #dbdirk可任意起名,且位置任意 
glimpsebin: /usr/bin/glimpse #可执行程序glimpse的位置 

4)在$INSTALLPREFIX/http/下增长一个文件.htaccess 内容: 
*** 
SetHandler cgi-script 

上面这个文件保证Apache server将几个perl文件做为cgi-script. 

5)按照lxr.conf中的设置创建dbdir ,按照上例,创建目录 
/home/httpd/html/lxr/dbdir 
进入这个目录执行$INSTALLPREFIX/bin/genxref yourdir 
其中yourdir是源码目录,好比/usr/src/linux 
若是要结合glimpse,则执行glimpseindex -H . yourdir 

6)修改 /etc/httpd/conf/access.conf ,加入 

Options All 
AllowOverride All 
order allow,denyweb

allow from all 


7)进入/etc/rc.d/init.d/ 执行 
killall httpd 
./httpd start 
进入X ,用浏览器 http://yourIP/lxr/http/blurb.html 
大功告成 ,这下你能够舒心的读源码了。 -- 
 数据库