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