閱讀linux源代碼的工具---lxr和glimpse簡介 作者: [email protected] 我們在閱讀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,你可以通路 http://lxr.linux.no/得到它的源代碼。解包後,遵循如下步驟: 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,deny allow from all 7)進入/etc/rc.d/init.d/ 執行 killall httpd ./httpd start 進入X ,用浏覽器 http://yourIP/lxr/http/blurb.html 大功告成 ,這下你可以舒心的讀源碼了。 注意:以上隻是lxr和glimpse的基本用法,進一步的說明可以參考連機文檔。如有問題請與 [email protected] 聯系。 中國Linux論壇 版權所有