閱讀linux原始碼的工具---lxr和glimpse簡介(轉)

BSDLite發表於2007-08-11
閱讀linux原始碼的工具---lxr和glimpse簡介(轉)[@more@]   我們在閱讀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比較簡單,就從它開始:
   首先訪問站點: 得到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的幫助文件以及本人的安裝體會*/
   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 :
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 內容:
《Files ~ (source|search|ident|diff|find)$》***
SetHandler cgi-s cript
《/Files》
上面這個檔案保證Apache server將幾個perl檔案作為cgi-s cript.
   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 ,加入
《Directory /home/httpd/html/lxr/http》
Options All
AllowOverride All
order allow,deny
allow from all
《/Directory》
   7)進入/etc/rc.d/init.d/ 執行
killall httpd
./httpd start
進入X ,用瀏覽器 大功告成 ,這下你可以舒心的讀原始碼了。
   注意:以上只是lxr和glimpse的基本用法,進一步的說明可以參考連機文件。如有問題請與 聯絡。

***文中的“《”“》”,實際為“”

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947667/,如需轉載,請註明出處,否則將追究法律責任。

相關文章