閱讀源碼工具介紹

 介紹了幾種常見的源代碼閱讀工具,包括常見的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 
大功告成 ,這下你能夠舒心的讀源碼了。 -- 
 數據庫

相關文章
相關標籤/搜索