當前位置:首頁 » 操作系統 » linux源碼閱讀工具

linux源碼閱讀工具

發布時間: 2023-11-22 02:01:12

① Mac 下有 Source Insight 之類的源碼閱讀軟體嗎

如果不想用其他軟體,完全可以直接用Wine + Source Insight。
列出幾個跨平台(Windows/linux/MacOS)的類似軟體:
Understand:生成的函數調用蠻有用的,代碼檢測和代碼密度功能,很好用
SlickEdit:編輯是很棒的,這方面遠超SI
Eclipse:中規中矩,如果商業軟體管理嚴格,推薦這個
這些軟體各有各的優勢,就個人經驗,一般查看Linux Kernel/U-boot代碼,偶爾是整個OS的代碼,Source Insight和Eclipse才是好的,其他的軟體Tag Index性能和效率實在太差,且不說生成的Tag文件>1GB,關鍵是軟體響應很慢,這個無法接受。
如果需要添加的文件少,那麼這些軟體都可以。
可以都嘗試一遍。
這些軟體都有期望的功能。
還有一點,在Ubuntu12.04上面,SI的菜單經常無法用滑鼠點擊,這個在Wine的官網有對應的Bug票。
但是可以使用快捷鍵來替代。
例如Alt + W為窗口菜單。
在更高版本的Ubuntu/Wine上面,這個Bug似乎已經解決了,但沒有驗證,只是看到其他人用的時候沒有這個問題。

② 怎麼開始讀Linux內核源碼

本人是一名 android display方面的工程師,結合實際工作經驗聊聊(觀點未必正確)
1. 准備工作:選擇什麼樣的版本,使用什麼樣的工具,這個需要考慮好。
如果是要參考書的話,kernel版本一般都應該選擇和書裡面同步的版本,不要去選擇最新的版本。因為最新的版本,各種改動比較多,反而對不上書了。
工具問題,你可以選擇windows下的source insight,也可以選擇linux下vim+ctags;

2. 第一遍瀏覽,我建議是先把kernel裡面的 start_kernel() 函數裡面的東西看清楚(不一定看明白),看看這個過程中,出現了什麼玩意,有哪些分支,並將分支初略的畫出一張圖來(當然,我自己並沒做到這一點,有點諷刺了)。
這裡面最重要的幾個地方,我個人認為,應該搞明白mole機制,它是怎麼通過編譯鏈接腳本放在特定的區域,然後系統起來後,又是如何去(按照什麼規則)去載入這些模塊;
應該搞明白sysfs系統,這個對於驅動和用戶空間的連接,有非常大的作用;
系統調用的open()應該走一遭,看看用戶空間到kernel之間參數是如何傳遞,又是怎麼通過vfs系統,把open的動作最終落實到某一個驅動的open()上去的;
對kernel啟動過程中,內存的分配演算法,是怎麼從夥伴演算法切換到最終的演算法上,也應該略有耳聞;對fork()函數的過程有所明白。
對kernel中基本的數據結構實現過程、鎖機制實現過程要有概念:
這一部分,總結起來,應該看的路線是:

start_kernel()
mole_init() 宏實現 // 看這個的時候,強烈建議,把makefile真正的意圖弄明白
open() 系統調用
fork() 系統調用
sysfs 框架實現
雙鏈表是如何實現的;
鎖最終是依靠什麼來保證的?(其實還是硬體來保證的)

對於數據結構和鎖這部分,就按照《Linux內核設計與實現》裡面的東西挨個挨個看。有興趣,自己也可以實現一個雙鏈表公共API,隨便哪個項目,一旦用上,直接拋進去,也未嘗不可。

第一遍瀏覽,竊以為,上面這幾部分看明白後,kernel的代碼對你依然很難,但已經不再有神秘的面紗。
後續,你想研究某個模塊,直接快速定位到那邊去就行。

3. 在完全用眼睛看完上面這部分內容後,kernel的路或許找到了,但是,萬里長征的第一步,並沒有邁出。這個時候,動手是很重要的了。
網上有各種方法,比如說,去kernel maillist裡面訂閱bug,然後自己試著解bug,此方法可取,而且是非常好。這里會遇到一個問題是,我們該怎麼調試?
有人是架各種虛擬機或者多台物理機一起開干,這個可以有。(但是本人動手能力確實有限,這個沒干成,本人是後面藉助了公司的開發板)
如果你也像我一樣,動手能力不足,如果你恰巧是手機或者類似手機開發公司的,你可以直接使用公司的開發機,通過串口log,將printk()的級別設置為3,把你需要的信息列印出來;
如果你是學生或者愛好者,可以花500左右人民幣,去淘寶上買一個開發板,也是帶串口的,所有的debug信息都是通過串口列印出來,保存到一個Log文件中,然後分析;
至於買什麼樣的板子,你可以隨便選擇,經典的s3c2440也行,高端點的樹莓派,或者全志什麼的,都可以。(不推薦全志,他們添加和修改硬體比較多,驅動也許不好搞)

4. 選擇你喜歡的模塊,進行深入研究,通過log列印,反復推敲,這個時候,bug是最好的導師。多關注kernel/Documents/ 目錄下的文檔。
你需要注意的是,一定要把該模塊無關的東西砍掉,否則,生命是有限的,而代碼是無限的。
最後一句話是,在用眼睛看完後,思考過後,還得動手,然後再思考。否則,只讀的話,僅能掃盲。

③ 如何閱讀linux的源代碼

1.精通C
2.懂匯編、計算機體系結構、操作系統原理
3.懂演算法和數據結構
4.找一本介紹linux源代碼的書看,按照書上的步驟做。
5.當然,你要有linux源代碼,並且盡可能多地閱讀相關文檔。

www.oldlinux.org上有一個《linux內核源代碼完全注釋》的電子文檔,是基於linux0.11版的內核注釋的。我承認,由於對C的一知半解,加上沒學過匯編和體系結構,演算法和數據結構也勉勉強強,雖然只有1萬行左右的代碼,還是沒能堅持把它看完。

要是你不喜歡看電子版的,該書已由機械工業出版社出版,你可以向出版社聯系購買。

④ 詳細介紹Linux內核開發工具都有哪些

1、Source Insight
Source Insight是Windows平台下一款流行度極高的源碼閱讀和編輯工具。不少Linux開發人員還是習慣於在Windows下進行源碼編輯,甚至查看和編輯Linux內核源碼,依然在Source Insight中完成。

說明:Source Insight是一款版權軟體,需要自行解決版權問題。

安裝Source Insight軟體後,新建一個工程,取名並指定數據存放位置,如圖 1.1所示。

圖 1.1 新建工程

點擊OK按鈕,進入工程設置界面,如圖 1.2所示。

圖 1.2 工程設置

然後添加源碼。瀏覽選中Linux內核源碼文件夾後,點擊「Add Tree」按鈕,將內核源碼樹的全部文件添加到工程中,如圖 1.3所示。

圖 1.3 添加內核源碼

添加完成,即可在Source Insight中進行源碼閱讀和編輯了,如圖 1.4所示。

圖 1.4 在Source Insight中閱讀源碼
2、Eclipse
Eclipse是一個跨平台IDE,既能運行於Windows平台,也能在Linux下運行。不少習慣於圖形界面操作的開發人員,在Linux下則習慣於用Eclipse來查看和編輯Linux源碼。

如果僅僅是在Eclipse中查看Linux內核源碼,則可以不必事先安裝交叉編譯器,否則則須事先安裝好交叉編譯器。

創建內核源碼工程。點擊FileàNewàProject,開始創建工程,在工程創建界面選擇創建C工程,如圖 1.5所示。

圖 1.5 創建C工程

點擊Next,在C Project界面的Project name欄中填寫工程名稱,去掉「Use default location」的勾,點擊Browse將Location設置為Linux內核源碼目錄,如圖 1.6所示。如果不在Eclipse中編譯內核,則使用Linux GCC即可,否則請使用安裝好的Cross GCC。

圖 1.6 導入Linux內核源碼

然後點擊Finish,完成Linux內核源碼導入,在Eclipse中即可進行代碼閱讀和編輯了,如圖 1.7所示。

圖 1.7 在Eclipse中瀏覽內核源碼

在Eclipse中進行源碼跟蹤,只需選擇函數、變數或者宏定義後按F3即可。更多的操作可在Navigate中找到。

3、vim+ctags+cscope
Vi/Vim是一個文本編輯器,在Vim中能高效的實現代碼編輯。但Vim的功能不僅僅是一個文本編輯器,藉助ctags和cscope的配合,Vim能實現堪比圖形IDE環境的源碼編輯和閱讀功能,在某種程度上甚至比圖形IDE更方便。

Vi/Vim的安裝不再介紹了。如果不是通過遠程登錄在遠程伺服器上工作,而是在本地桌面系統操作,還可以用gvim啟動Vi編輯器。

Taglist
Taglist是Vim的一個源碼瀏覽插件,可從http://www.vim.org網站獲得。下載到壓縮包後,在本地解壓,然後將解壓得到目錄中的plugin目錄復制到~/.vim目錄。如果用戶主目錄下沒有.vim目錄,則建立一個這樣的目錄即可。

Ctags
Ctags是一個用於產生tags文件的軟體,可以下載源碼進行編譯安裝,在Ubuntu下,可通過apt-get進行安裝:
sudo apt-get install exuberant-ctags

源碼閱讀和跟蹤
進入准備查看的源碼所在目錄,首先生成tags文件:

ctags -R
執行時間長短取決於源碼數量的多少,執行完畢,在當前目錄下可看到一個tags文件。源碼越多,執行時間越長,產生的tags文件也越大。

注意:如果修改了源碼,代碼行號發生了變化,需要重新生成tags文件。

(1)查看函數等定義。用Vi/Vim打開一個C文件。若想知道某個函數、變數、結構或者宏定義在什麼地方定義,先將游標移動到函數(變數、結構或者宏定義)上,然後按CTRL+]即可。查看後,按CTRL+o可回到原來所在位置。

(2)查看文件函數列表。打開C文件後,在Vi/Vim的命令狀態下輸入:TlistToggle(Vi/Vim的命令輸入支持補全),在Vi/Vim左邊就會出現函數列表側欄,如圖 1.8所示。按CTRL+ww(2次w),可在列表和代碼查看區間切換。

圖 1.8 Vi/Vim的函數列表側欄

如果在本地桌面,用Gvim打開C文件,使用起來比較接近IDE集成環境。用滑鼠雙擊函數即可跳轉到函數定義的地方,CTRL+滑鼠右鍵即可回退到原來所在位置。更多實用特性,還需要在實際操作中體驗。

4、LXR
LXR是Linux Cross Referencer的縮寫,是一個比較流行的Linux源碼查看工具,當然也不僅僅局限於查看Linux源碼。LXR的下載地址為:http://lxr.sourceforge.net,參考該網站的安裝說明,很容易在本機搭建一個本地LXR用於源碼查看。

如果不想搭建本地LXR,可以直接瀏覽已經搭好的LXR網站,推薦兩個網站:一個是開源中國網站提供的Linux源碼在線閱讀http://lxr.oss.org.cn,另一個是http://lxr.free-electrons.com網站,前者速度較快,但是提供的Linux內核版本較少,後者則提供的版本較多。網站提供了源碼閱讀、關鍵字搜索和自由文本搜索功能。兩者的網頁快照分別如圖 1.9和圖 1.10所示。

⑤ linux有什麼源代碼編輯器

Linux程序員經常抱怨,自從他們使用了免費開源的系統平台後,作為一名程序員,卻並沒有在代碼編輯器上得到足夠的重視。他們往往會認為Linux平台上的代碼編輯器太少了,以至於影響他們的編程工作。但是事實並非如此,在Linux平台上有太多的代碼編輯器供你使用了,下面我們分享了7個最受Linux程序員歡迎的代碼編輯器,繼續在編程的路上前行吧!

1、Eclipse
Eclipse是一款很酷的開源代碼編輯器,同時它也是最受程序員親睞的代碼編輯器之一,它擁有代碼高亮和智能提示等強大的功能。在Eclipse中,你可以完全勝任以下編程語言的工作——Python, R, Ruby, JavaScript, Natural, Lasso, C, C++, COBOL, Scheme, Clojure, Groovy等等,它也是非常著名的Java集成開發環境,甚至提供了對Java 8的支持。在一些Web開發IDE特性的幫助下,你可以非常方便地對代碼文件進行組織和訪問

2、Light Table
Light Table將會是一款徹底改變Linux編輯器概念的代碼編輯器,它提供了直觀和易用的編程界面。並且Light Table可以很方便地進行定製功能,因為它也是開源的。它有一個強大的插件管理器,這樣你就不用在網上漫無目的的尋找需要的插件了。

3、Sublime Text 3
這是一款絕對值得一提的Linux代碼編輯器,因為它有簡單而且超酷的功能特性。Sublime Text 3最獨特的地方就是它沒有獨特的功能,它僅僅是一個簡單的代碼編輯器,有了它,你就可以非常方便地對多行代碼進行修改了。利用Sublime Text 3你可以做操作文件、重命名變數、分離編輯和其他有趣的操作。

4、Brackets
Brackets也是一款為Linux開發者設計的開源代碼編輯器,使用Brackets寫代碼,你不會被任何事情所打斷。比如在寫HTML代碼時,即便你沒有保存代碼也可以及時預覽你的Web頁面效果。你也可以使用Theseus來檢查變數,Brackets默認提供一種主題,當然你也可以在擴展中心獲取更多的主題。

5、Dart Editor
Dart Editor是Google開發設計的,旨在幫助開發者製作光亮而驚嘆的Web應用。Dart Editor支持多種開發語言,同時也集成了Dartium。通過它的靜態分析引擎,你可以創建,維護,調試和開發自己的Web應用。函數、類、方法等都能以樹的結構列出來,方便你編寫代碼。

6、Vim
Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用。和Emacs並列成為類Unix系統用戶最喜歡的編輯器。

7、Emacs
Emacs不僅僅是一個編輯器,他是一個整合環境,或可稱它為集成開發環境,這些功能如讓使用者置身於全功能的操作系統中。Emacs不僅可以作為文本編輯器,還可以用來收發電子郵件、通過FTP/TRAMP編輯遠程檔案、通過Telnet登錄主機、上新聞組、登陸IRC和朋友交流、查看日歷等功能。

⑥ 在Windows下如何閱讀Linux下的源代碼

windows下一般使用source insight來閱讀linux源碼。
Source Insight是一個面向項目開發的程序編輯器和代碼瀏覽器,它擁有內置的對C/C++, C#和Java等程序的分析。能分析源代碼並在工作的同時動態維護它自己的符號資料庫,並自動顯示有用的上下文信息。

⑦ 如何查看 linux 內核源代碼

Linux的內核源代碼可以從很多途徑得到。一般來講,在安裝的linux系統下,/usr/src/linux目錄下的東西就是內核源代碼。

對於源代碼的閱讀,要想比較順利,事先最好對源代碼的知識背景有一定的了解。對於linux內核源代碼來講,我認為,基本要求是:1、操作系統的基本知識;2、對C語言比較熟悉,最好要有匯編語言的知識和GNU C對標准C的擴展的知識的了解。另外在閱讀之前,還應該知道Linux內核源代碼的整體分布情況。我們知道現代的操作系統一般由進程管理、內存管理、文件系統、驅動程序、網路等組成。看一下Linux內核源代碼就可看出,各個目錄大致對應了這些方面。Linux內核源代碼的組成如下(假設相對於linux目錄):

arch 這個子目錄包含了此核心源代碼所支持的硬體體系結構相關的核心代碼。如對於X86平台就是i386。

include 這個目錄包括了核心的大多數include文件。另外對於每種支持的體系結構分別有一個子目錄。

init 此目錄包含核心啟動代碼。

mm 此目錄包含了所有的內存管理代碼。與具體硬體體系結構相關的內存管理代碼位於arch/*/mm目錄下,如對應於X86的就是arch/i386/mm/fault.c 。

drivers 系統中所有的設備驅動都位於此目錄中。它又進一步劃分成幾類設備驅動,每一種也有對應的子目錄,如音效卡的驅動對應於drivers/sound。

ipc 此目錄包含了核心的進程間通訊代碼。

moles 此目錄包含已建好可動態載入的模塊。

fs Linux支持的文件系統代碼。不同的文件系統有不同的子目錄對應,如ext2文件系統對應的就是ext2子目錄。

kernel 主要核心代碼。同時與處理器結構相關代碼都放在arch/*/kernel目錄下。

net 核心的網路部分代碼。裡面的每個子目錄對應於網路的一個方面。

lib 此目錄包含了核心的庫代碼。與處理器結構相關庫代碼被放在arch/*/lib/目錄下。

scripts此目錄包含用於配置核心的腳本文件。

Documentation 此目錄是一些文檔,起參考作用。

俗話說:「工欲善其事,必先利其器」。 閱讀象Linux核心代碼這樣的復雜程序令人望而生畏。它象一個越滾越大的雪球,閱讀核心某個部分經常要用到好幾個其他的相關文件,不久你將會忘記你原來在干什麼。所以沒有一個好的工具是不行的。由於大部分愛好者對於Window平台比較熟悉,並且還是常用Window系列平台,所以在此我介紹一個Window下的一個工具軟體:Source Insight。這是一個有30天免費期的軟體,可以從www.sourcedyn.com下載。安裝非常簡單,和別的安裝一樣,雙擊安裝文件名,然後按提示進行就可以了。安裝完成後,就可啟動該程序。這個軟體使用起來非常簡單,是一個閱讀源代碼的好工具。它的使用簡單介紹如下:先選擇Project菜單下的new,新建一個工程,輸入工程名,接著要求你把欲讀的源代碼加入(可以整個目錄加)後,該軟體就分析你所加的源代碼。分析完後,就可以進行閱讀了。對於打開的閱讀文件,如果想看某一變數的定義,先把游標定位於該變數,然後點擊工具條上的相應選項,該變數的定義就顯示出來。對於函數的定義與實現也可以同樣操作。別的功能在這里就不說了,有興趣的朋友可以裝一個Source Insight,那樣你閱讀源代碼的效率會有很大提高的。怎麼樣,試試吧!

熱點內容
電腦上要編譯程序要什麼軟體 發布:2024-11-30 04:58:44 瀏覽:858
ecshop存儲圖片 發布:2024-11-30 04:44:08 瀏覽:978
utc時間linux 發布:2024-11-30 04:43:23 瀏覽:80
調報表需要在伺服器電腦嗎 發布:2024-11-30 04:37:26 瀏覽:225
軟體包訪問幫助 發布:2024-11-30 04:37:25 瀏覽:342
少兒編程網課 發布:2024-11-30 04:31:53 瀏覽:623
安卓系統更新後有什麼新功能 發布:2024-11-30 04:30:31 瀏覽:483
汽車密碼盒有什麼功能 發布:2024-11-30 04:30:28 瀏覽:843
分子構型演算法 發布:2024-11-30 04:30:20 瀏覽:677
演算法的收斂速度 發布:2024-11-30 04:23:16 瀏覽:398