Source Insight3.0:Linux原始碼閱讀)

來源:互聯網
上載者:User

Source Insight3.0:Linux原始碼閱讀

from http://hi.baidu.com/freeness/blog/item/8f508644f0afac4d510ffed8.html

 

作為一個開放原始碼的作業系統,Linux附帶的原始碼庫使得廣大愛好者有了一個廣泛學習、深入鑽研的機會,特別是Linux核心的組織極為複雜,同時, 又不能像windows平台的程式一樣,可以使用整合式開發環境通過察看變數和函數,甚至設定斷點、單步運行、調試等手段來弄清楚整個程式的組織圖,使得 Linux核心原始碼的閱讀變得尤為困難。

當然Linux下的vim和emacs編輯程式並不是沒有提供變數、函數搜尋,彩色顯示程式語句等功能。它們的功能是非常強大的。比如,vim和 emacs就各自內嵌了一個標記程式,分別叫做ctag和etag,通過配置這兩個程式,也可以實現功能強大的函數變數搜尋功能,但是由於其配置複雜, linux附帶的有關資料也不是很詳細,而且,即使建立好標記庫,要實現代碼彩色顯示功能,仍然需要進一步的配置(在另一片文章,我將會講述如何配置這些 功能),同時,對於大多數愛好者來說,可能還不能熟練使用vim和emacs那些功能比較強大的命令和快速鍵。

為了方便的學習Linux來源程式,我們不妨回到我們熟悉的window環境下,也算是“師以長夷以制夷”吧。但是在Window平台上,使用一些常見 的整合式開發環境,效果也不是很理想,比如難以將所有的檔案加進去,尋找速度緩慢,對於非Windows平台的函數不能彩色顯示。於是筆者通過在互連網上搜 索,終於找到了一個強大的原始碼編輯器,它的卓越效能使得學習Linux核心原始碼的難度大大降低,這便是Source Insight3.0,它是一個Windows平台下的共用軟體,可以從http://www.sourceinsight.com/上邊下載30天試用 版本。由於Source Insight是一個Windows平台的應用軟體,所以首先要通過相應手段把Linux系統上的程式原始碼弄到Windows平台下,這一點可以通過在 linux平台上將/usr/src目錄下的檔案拷貝到Windows平台的分區上,或者從網上光碟片直接拷貝檔案到Windows平台的分區來實現。

下面主要講解如何使用Source Insight,考慮到閱讀來源程式的愛好者都有相當的軟體使用水平,本文對於一些瑣碎、人所共知的細節略過不提,僅介紹一些主要內容,以便大家能夠很快熟練使用本軟體,減少摸索的過程。

安裝Source Insight並啟動程式,可以進入圖1介面。在工具條上有幾個值得注意的地方,,圖中內凹左邊的是工程按鈕,用於顯示工程視窗的情況;右邊的那 個按鈕按下去將會顯示一個視窗,裡邊提供游標所在的函數體內對其他函數的調用圖,通過點擊該表單裡那些函數就可以進入該函數所在的地方。

 



圖1 Source Insight介面圖
由於Source Insight實質上是一個支援多種開發語言(java,c ,c++等等)的編輯器,只不過由於其尋找、定位、彩色顯示等功能的強大,而被我們當成原始碼閱讀工具使用。所以,為了有效閱讀來源程式,首先必須選擇功 能菜單上的 “Project”選項的子功能表“New Project”建立一個項目,項目名稱可以自由選定,當然也可以選擇刪除(Remove)一個項目。當刪除一個項目的時候,並不刪除原有的原始碼檔案, 只是將該軟體產生的那些工程輔助檔案刪除。設定之後,將會彈出一個對話方塊2,接受預設選擇,如果,硬碟空間足夠,可以將第一個複選框選上,該選項將會 需要與原始碼大致同等的空間來建立一個本機資料庫以加快尋找的速度。

 



圖2 工程設定
點擊“OK”按鈕,接受選擇後,將會有一個新的對話方塊彈出,在這個對話方塊裡,可以選擇將要閱讀的檔案加入工程,一種方式是通過在File Name中輸入要閱讀原始碼檔案的名稱,點擊“Add”按鈕將其加入,也可以通過其中“Add All”和“Add Tree”兩個按鈕可以將選中目錄的所有檔案加入到工程中,其中“Add All”選項會提示加入頂層檔案和遞迴加入所有檔案兩種方式,而“Add Tree”相當於“Add All”選項的遞迴加入所有檔案,可以根據需要使用,就我來說,更喜歡“Add Tree”一些。由於該程式採用了部分開啟檔案的方式,沒有用到的檔案不會開啟,所以,加入數千個檔案也不用擔心加入的檔案超出程式的所能容忍的最大值, 我就是採用“Add Tree”的方式將Linux2.4核心的四千五百九十一個檔案加入的。

 



圖3 添加檔案
加入檔案後,點擊一個檔案,可以出現使用介面,4所示,其中,右邊的那個視窗(Linux Project,即工程視窗)預設按照字母順序列出當前工程中所有的檔案。

 



圖4 工作視窗
點擊一個檔案就可以開啟該檔案,顯示5所示,進入到右邊的那個視窗分別可以以檔案清單的方式,列出所有的檔案,每個表單下邊有一排按鈕,左邊的窗 口(21142.c)從左至右分別為:按字母順序排列所有標記、按照檔案中行數順序排列標記、按照類型排列標記、瀏覽本地檔案標記、標記視窗屬性。右邊的 視窗(Linux Project)從左至右分別為:按字母循序檔列表、顯示檔案夾、按照檔案類型歸類檔案、全部檔案的所有標記列表、按照標記類型歸類標記、跳轉到定義 處、顯示標記資訊、瀏覽工程標記、尋找函數調用、工程屬性,其中全部檔案的所有標記列表選項可能要一段時間抽取標記,同步到資料庫去,如果開始選擇了建立 標記資料庫,將會在今後節省同步時間,最有用的莫過於瀏覽標記資訊和尋找函數調用,前者可以通過“Jump”按鈕在不同的地方尋找同樣的標誌,還可以通過 “Reference”按鈕結合後者進行全域的標記尋找。

 





圖5 開啟的檔案

  Reference功能是Source Insight的特色之一,它可以在速度極快的在整個工程中找到所有的標記,並且在該行程式的前邊加上紅色箭頭的小按鈕連結上。圖6是一個 Reference搜尋後的結果,它可以有兩種模式,一種集中顯示結果,圖6顯示的就是這種模式,在這種模式下,可以通過前邊的紅色箭頭小按鈕進入另外一 種模式,該標記的具體的所在處,也可以通過標記的具體所在處點擊紅色箭頭小按鈕進入警種模式,還可以通過工具條上的兩個紅色小箭頭直接在第二種模式下前後 移動,察看相應資訊。它的這個強大的功能使得閱讀Linux來源程式有如神助。但是要注意的是,當進行了第二次“Reference”時,它會提示你將結果 集附加在第一個結果集的後邊還是取代第一個結果集。如果選擇前者,不能對結果集根據前後兩次搜尋結果進行分類,然後在其子類裡進行移動,只能在整個結果集 裡移動;如果,選擇後者,結果集將會被替換為第二次搜尋的結果,略微有些不方便。

 

圖6 Reference的搜尋結果

當然,Source Insight 還提供了一些其他常見的便利。比如:右鍵菜單幾乎包含了程式的所有功能,可以在編輯視窗為程式加上行號,還可以統計整個工程的程式行數,當然還有功能強大 卻用不上自動完成功能,似乎連它的30天試用期也是別有用心——可以迫使你儘可能快速的閱讀來源程式,其他一些技巧大家可以在使用過程中慢慢摸索。怎麼樣? 愛好讀原始碼的朋友,不妨馬上去下載一個,去開始我們的Linux核心探險之旅吧!

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.