閱讀linux原始碼的工具---lxr和glimpse簡介(轉)
閱讀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的基本用法,進一步的說明可以參考連機文件。如有問題請與 聯絡。
***文中的“《”“》”,實際為“”
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux核心原始碼的閱讀及相關工具介紹(轉)Linux原始碼
- 原始碼閱讀工具-understand原始碼
- 【原始碼閱讀】AndPermission原始碼閱讀原始碼
- TiDB 原始碼閱讀系列文章(十)Chunk 和執行框架簡介TiDB原始碼框架
- 【原始碼閱讀】Glide原始碼閱讀之with方法(一)原始碼IDE
- 【原始碼閱讀】Glide原始碼閱讀之into方法(三)原始碼IDE
- TiCDC 原始碼閱讀(二)TiKV CDC 模組介紹原始碼
- Scrapy原始碼閱讀分析_1_整體框架和流程介紹原始碼框架
- ReactorKit原始碼閱讀React原始碼
- AQS原始碼閱讀AQS原始碼
- CountDownLatch原始碼閱讀CountDownLatch原始碼
- HashMap 原始碼閱讀HashMap原始碼
- delta原始碼閱讀原始碼
- 原始碼閱讀-HashMap原始碼HashMap
- NGINX原始碼閱讀Nginx原始碼
- Mux 原始碼閱讀UX原始碼
- HashMap原始碼閱讀HashMap原始碼
- fuzz原始碼閱讀原始碼
- RunLoop 原始碼閱讀OOP原始碼
- express 原始碼閱讀Express原始碼
- muduo原始碼閱讀原始碼
- stack原始碼閱讀原始碼
- Appdash原始碼閱讀——RecentStore和LimitStoreAPP原始碼MIT
- 閱讀原始碼的樂趣原始碼
- 【原始碼閱讀】Glide原始碼閱讀之load方法(二)原始碼IDE
- PostgreSQL 原始碼解讀(3)- 如何閱讀原始碼SQL原始碼
- PostgreSQL 原始碼解讀(240)- HTAB簡介SQL原始碼
- 閱讀mybatis的原始碼的思路MyBatis原始碼
- 我的原始碼閱讀之路:redux原始碼剖析原始碼Redux
- redux 和 react-redux 部分原始碼閱讀ReduxReact原始碼
- PHP原始碼閱讀:strtolower 和 strtoupper 函式PHP原始碼函式
- JDK原始碼閱讀:Object類閱讀筆記JDK原始碼Object筆記
- Laravel 原始碼閱讀 - QueueLaravel原始碼
- Vollery原始碼閱讀(—)原始碼
- 使用OpenGrok閱讀原始碼原始碼
- 如何閱讀Java原始碼?Java原始碼
- buffer 原始碼包閱讀原始碼
- 原始碼閱讀技巧篇原始碼