版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Source Insight 經(jīng)典教程作者:AooYu 來源:博客園 發(fā)布時(shí)間:2010-01-25 10:22 閱讀:333 次 原文鏈接 收藏 Source Insight實(shí)質(zhì)上是一個(gè)支持多種開發(fā)語言(java,c ,c 等等)的編輯器,只不過由于其查找、定位、彩色顯示等功能的強(qiáng)大,常被我們當(dāng)成源代碼閱讀工具使用。作為一個(gè)開放源代碼的操作系統(tǒng),Linux附帶的源代碼庫(kù)使得廣大愛好者有了一個(gè)廣泛學(xué)習(xí)、深入鉆研的機(jī)會(huì),特別是Linux內(nèi)核的組織極為復(fù)雜,同時(shí),
2、又不能像windows平臺(tái)的程序一樣,可以使用集成開發(fā)環(huán)境通過察看變量和函數(shù),甚至設(shè)置斷點(diǎn)、單步運(yùn)行、調(diào)試等手段來弄清楚整個(gè)程序的組織結(jié)構(gòu),使得Linux內(nèi)核源代碼的閱讀變得尤為困難。當(dāng)然Linux下的vim和emacs編輯程序并不是沒有提供變量、函數(shù)搜索,彩色顯示程序語句等功能。它們的功能是非常強(qiáng)大的。比如,vim和emacs就各自內(nèi)嵌了一個(gè)標(biāo)記程序,分別叫做ctag和etag,通過配置這兩個(gè)程序,也可以實(shí)現(xiàn)功能強(qiáng)大的函數(shù)變量搜索功能,但是由于其配置復(fù)雜,linux附帶的有關(guān)資料也不是很詳細(xì),而且,即使建立好標(biāo)記庫(kù),要實(shí)現(xiàn)代碼彩色顯示功能,仍然需要進(jìn)一步的配置(在另一片文章,我將會(huì)講述如何配
3、置這些功能),同時(shí),對(duì)于大多數(shù)愛好者來說,可能還不能熟練使用vim和emacs那些功能比較強(qiáng)大的命令和快捷鍵。為了方便的學(xué)習(xí)Linux源程序,我們不妨回到我們熟悉的window環(huán)境下,也算是“師以長(zhǎng)夷以制夷”吧。但是在Window平臺(tái)上,使用一些常見的集成開發(fā)環(huán)境,效果也不是很理想,比如難以將所有的文件加進(jìn)去,查找速度緩慢,對(duì)于非Windows平臺(tái)的函數(shù)不能彩色顯示。于是筆者通過在互聯(lián)網(wǎng)上搜索,終于找到了一個(gè)強(qiáng)大的源代碼編輯器,它的卓越性能使得學(xué)習(xí)Linux內(nèi)核源代碼的難度大大降低,這便是Source Insight3.0,它是一個(gè)Windows平臺(tái)下的共享軟件,可以從 Insight是一個(gè)W
4、indows平臺(tái)的應(yīng)用軟件,所以首先要通過相應(yīng)手段把Linux系統(tǒng)上的程序源代碼弄到Windows平臺(tái)下,這一點(diǎn)可以通過在linux平臺(tái)上將/usr/src目錄下的文件拷貝到Windows平臺(tái)的分區(qū)上,或者從網(wǎng)上光盤直接拷貝文件到Windows平臺(tái)的分區(qū)來實(shí)現(xiàn)。下面主要講解如何使用Source Insight,考慮到閱讀源程序的愛好者都有相當(dāng)?shù)能浖褂盟剑疚膶?duì)于一些瑣碎、人所共知的細(xì)節(jié)略過不提,僅介紹一些主要內(nèi)容,以便大家能夠很快熟練使用本軟件,減少摸索的過程。安裝Source Insight并啟動(dòng)程序,可以進(jìn)入圖1界面。在工具條上有幾個(gè)值得注意的地方,如圖所示,圖中內(nèi)凹左邊的是工程按鈕,
5、用于顯示工程窗口的情況;右邊的那個(gè)按鈕按下去將會(huì)顯示一個(gè)窗口,里邊提供光標(biāo)所在的函數(shù)體內(nèi)對(duì)其他函數(shù)的調(diào)用圖,通過點(diǎn)擊該窗體里那些函數(shù)就可以進(jìn)入該函數(shù)所在的地方。圖1 Source Insight界面圖由于Source Insight實(shí)質(zhì)上是一個(gè)支持多種開發(fā)語言(java,c ,c+等等)的編輯器,只不過由于其查找、定位、彩色顯示等功能的強(qiáng)大,而被我們當(dāng)成源代碼閱讀工具使用。所以,為了有效的閱讀源程序,首先必須選擇功能菜單上的 “Project”選項(xiàng)的子菜單“New Project”新建一個(gè)項(xiàng)目,項(xiàng)目名稱可以自由選定,當(dāng)然也可以選擇刪除(Remove)一個(gè)項(xiàng)目。當(dāng)刪除一個(gè)項(xiàng)目的時(shí)候,并不刪除原有
6、的源代碼文件,只是將該軟件生成的那些工程輔助文件刪除。設(shè)定之后,將會(huì)彈出一個(gè)對(duì)話框如圖2,接受默認(rèn)選擇,如果,硬盤空間足夠,可以將第一個(gè)復(fù)選框選上,該選項(xiàng)將會(huì)需要與源代碼大致同等的空間來建立一個(gè)本地?cái)?shù)據(jù)庫(kù)以加快查找的速度。圖2 工程設(shè)置點(diǎn)擊“OK”按鈕,接受選擇后,將會(huì)有一個(gè)新的對(duì)話框彈出,在這個(gè)對(duì)話框里,可以選擇將要閱讀的文件加入工程,一種方式是通過在File Name中輸入要閱讀源代碼文件的名稱,點(diǎn)擊“Add”按鈕將其加入,也可以通過其中“Add All”和“Add Tree”兩個(gè)按鈕可以將選中目錄的所有文件加入到工程中,其中“Add All”選項(xiàng)會(huì)提示加入頂層文件和遞歸加入所有文件兩種方
7、式,而“Add Tree”相當(dāng)于“Add All”選項(xiàng)的遞歸加入所有文件,可以根據(jù)需要使用,就我來說,更喜歡“Add Tree”一些。由于該程序采用了部分打開文件的方式,沒有用到的文件不會(huì)打開,所以,加入數(shù)千個(gè)文件也不用擔(dān)心加入的文件超出程序的所能容忍的最大值,我就是采用“Add Tree”的方式將Linux2.4內(nèi)核的四千五百九十一個(gè)文件加入的。圖3 添加文件加入文件后,點(diǎn)擊一個(gè)文件,可以出現(xiàn)使用界面,如圖4所示,其中,右邊的那個(gè)窗口(Linux Project,即工程窗口)缺省按照字母順序列出當(dāng)前工程中所有的文件。圖4 工作窗口點(diǎn)擊一個(gè)文件就可以打開該文件,顯示如圖5所示,進(jìn)入到右邊的那個(gè)
8、窗口分別可以以文件列表的方式,列出所有的文件,每個(gè)窗體下邊有一排按鈕,左邊的窗口(21142.c)從左至右分別為:按字母順序排列所有標(biāo)記、按照文件中行數(shù)順序排列標(biāo)記、按照類型排列標(biāo)記、瀏覽本地文件標(biāo)記、標(biāo)記窗口屬性。右邊的窗口(Linux Project)從左至右分別為:按字母順序文件列表、顯示文件夾、按照文件類型歸類文件、全部文件的所有標(biāo)記列表、按照標(biāo)記類型歸類標(biāo)記、跳轉(zhuǎn)到定義處、顯示標(biāo)記信息、瀏覽工程標(biāo)記、查找函數(shù)調(diào)用、工程屬性,其中全部文件的所有標(biāo)記列表選項(xiàng)可能要一段時(shí)間抽取標(biāo)記,同步到數(shù)據(jù)庫(kù)去,如果開始選擇了建立標(biāo)記數(shù)據(jù)庫(kù),將會(huì)在今后節(jié)省同步時(shí)間,最有用的莫過于瀏覽標(biāo)記信息和查找函數(shù)調(diào)
9、用,前者可以通過“Jump”按鈕在不同的地方查找同樣的標(biāo)志,還可以通過“Reference”按鈕結(jié)合后者進(jìn)行全局的標(biāo)記查找。Reference功能是Source Insight的特色之一,它可以在速度極快的在整個(gè)工程中找到所有的標(biāo)記,并且在該行程序的前邊加上紅色箭頭的小按鈕鏈接上。圖6是一個(gè)Reference搜索后的結(jié)果,它可以有兩種模式,一種集中顯示結(jié)果,圖6顯示的就是這種模式,在這種模式下,可以通過前邊的紅色箭頭小按鈕進(jìn)入另外一種模式,該標(biāo)記的具體的所在處,也可以通過標(biāo)記的具體所在處點(diǎn)擊紅色箭頭小按鈕進(jìn)入警種模式,還可以通過工具條上的兩個(gè)紅色小箭頭直接在第二種模式下前后移動(dòng),察看相應(yīng)信息。
10、它的這個(gè)強(qiáng)大的功能使得閱讀Linux源程序有如神助。但是要注意的是,當(dāng)進(jìn)行了第二次“Reference”時(shí),它會(huì)提示你將結(jié)果集附加在第一個(gè)結(jié)果集的后邊還是取代第一個(gè)結(jié)果集。如果選擇前者,不能對(duì)結(jié)果集根據(jù)前后兩次搜索結(jié)果進(jìn)行分類,然后在其子類里進(jìn)行移動(dòng),只能在整個(gè)結(jié)果集里移動(dòng);如果,選擇后者,結(jié)果集將會(huì)被替換為第二次搜索的結(jié)果,略微有些不方便。圖6 Reference的搜索結(jié)果
11、60; Source I
12、nsight設(shè)置1、背景色選擇 要改變背景色Options->preference->windows background->color設(shè)置背景色2、解決字符等寬對(duì)齊問題。 SIS默認(rèn)字體是VERDANA,很漂亮。這網(wǎng)頁上應(yīng)該也是用的VERDANA字體。但由于美觀的緣故,VERDANA字體是不等寬的。比如下面兩行 llllllllll MMMMMMMMMM 同樣10個(gè)字符,長(zhǎng)度差多了.用VERDA
13、NA來看程序,有些本應(yīng)該對(duì)齊的就歪了。解放方法是使用等寬的字體,但肯定比較丑。比較推薦的是用Courier New。3、解決TAB鍵縮進(jìn)問題 Options-> Document Options里面的右下角Editing Options欄里,把Expand tabs勾起來,然后確定。OK,現(xiàn)在TAB鍵的縮進(jìn)和四個(gè)空格的縮進(jìn)在SIS里面看起來就對(duì)齊咯4、SI中的自動(dòng)對(duì)齊設(shè)置: 在C程序里, 如果遇到行末沒有分號(hào)的語句,如IF, WHILE, SWITCH等, 寫到該行末按回車,則新行自動(dòng)相對(duì)上一行縮進(jìn)兩列。
14、 Option->Document option下的Auto Indient中Auto Indient Type有三種類型 None,Simple,Smart。個(gè)人推薦選用Simple類型。5、向項(xiàng)目中添加文件時(shí),只添加特定類型的文件(文件類型過濾器) 編輯匯編代碼時(shí),在SIS里建立PROJECT并ADD TREE的時(shí)候,根據(jù)默認(rèn)設(shè)置并不會(huì)把該TREE里面所有匯編文件都包含進(jìn)來 只加了.inc和.asm后綴的,.s后綴的沒有。而且用SIS打開.s的文件,一片黑白沒有色彩,感覺回到DOS的EDI
15、T時(shí)代了 解決方法是在Options->Document Options里面,點(diǎn)左上的Document Type下拉菜單,選擇x86 Asm Source File, 然后在右邊的File filter里*.asm;*.inc;的后面加上*.s;接著CLOSE就可以了。 上面問題解決了,但注意加入*.s后還需要重新ADD TREE一遍才能把這些匯編加到PROJECT里面。6、添加文件類型 用戶可以定義自己的類型,Options->Docu
16、ment Options->add type,定義文件類型名以及文件名后綴。 勾選include when adding to projects在添加目錄下文件到工程是該類文件就會(huì)添加進(jìn)SI的工程。 如果需要將所有文件添加進(jìn)SI的工程,可以定義一種文件類型*.*。 7、恢復(fù)ctrl+a的全選功能 通過關(guān)鍵詞save 找到save all,更改為ctrl+shift+a,通過關(guān)鍵詞select找到select all,更改為ctrl +aSource Insi
17、ght常用的快捷鍵: Ctrl+= :Jump to definition Alt+/ :Look up reference F3 : search backward F4 : search forward F5: go to Line F7 :Look up symbols F8 :Look up local symbols
18、60; F9 :Ident left F10 :Ident right Alt+, :Jump backword Alt+. : Jump forward Shift+F3 : search the word under cusor backward Shift+F4 : search the word under cusor forward F12 : increme
19、ntal search Shift+Ctrl+f: search in project shift+F8 : hilight word Source Insight的窗口操作: project window Ctrl+O打開 symbol window Alt+F8打開和關(guān)閉 Contex Window 自定義鍵打開和關(guān)閉 Relation W
20、indow 自定義鍵打開先鎖定再刷新聯(lián)系在Source Insight中添加自定義功能的步驟如下:1.Source Insight中,Options->Custom Commands.->Add.,New Command name 隨便寫,我的是"Edit with Vim" 2.Run中寫入: "C:Program FilesVimvim63gvim.exe" -remote-silent +%l %f 意思是在當(dāng)前已經(jīng)打開的gvim窗口里面打開當(dāng)前的文件,并且跳轉(zhuǎn)到指定行 %l為當(dāng)前的行號(hào),%f為文件名 使用 -remote-silent
21、 的作用是,如果已經(jīng)打開了對(duì)應(yīng)文件,就不會(huì)打開第二次,而是在已經(jīng)打開的文件里跳轉(zhuǎn)到對(duì)應(yīng)行 3.還是同一個(gè)對(duì)話框里面,選擇Keys->Assign New Key.->按F12,如果你已經(jīng)將F12設(shè)置給其他命令,選擇其他的按鍵就行了 下面是一些常用自定義功能:( CUSTOM COMMANDS )打開資源管理器并選中當(dāng)前文件ShellExecute open explorer /e,/select,%f查看log"C:Program FilesTortoiseSVNbinTortoiseProc.exe" /command:log /path:%f /notemp
22、file /closeonenddiff"C:Program FilesTortoiseSVNbinTortoiseProc.exe" /command:diff /path:%f /notempfile /closeonend取得鎖定(check out)"C:Program FilesTortoiseSVNbinTortoiseProc.exe" /command:lock /path:%f /notempfile /closeonend提交(check in)"C:Program FilesTortoiseSVNbinTortoisePr
23、oc.exe" /command:commit /path:%f /notempfile /closeonend更新(update)"C:Program FilesTortoiseSVNbinTortoiseProc.exe" /command:update /path:%f /notempfile /closeonend更新整個(gè)目錄(update all)"C:Program FilesTortoiseSVNbinTortoiseProc.exe" /command:update /path:*.* /notempfile /closeone
24、nd取消鎖定(undo check out)"C:Program FilesTortoiseSVNbinTortoiseProc.exe" /command:revert /path:%f /notempfile /closeonend在ultriEdit中編輯"C:Program FilesUltraEdit-32/uedit32" %f在vim中編輯并定位到當(dāng)前行"C:Program FilesVimvim63gvim.exe" -remote-silent +%l %f 匯總其他小技巧:讓 和 不縮進(jìn):Options->D
25、ocument Options->Auto Indent->Indent Open Brace/Indent Close Bracehao space: SourceInsight 小技巧1、按住"ctrl", 再用鼠標(biāo)指向某個(gè)變量,點(diǎn)擊一下,就能進(jìn)入這個(gè)變量的定義。2、今天把一個(gè)用sourceinsight排版整齊的C文件,偶然用VC打開一看,全亂了。研究了半天,發(fā)現(xiàn)SI對(duì)每個(gè)字符的寬度不太一致。 請(qǐng)教同事發(fā)現(xiàn)選上"view -> draft view", 就可以讓每個(gè)字符的寬度一致了。快捷鍵是 &
26、quot;Alt + F12"3、"shift+F8" 標(biāo)亮所有文本中光標(biāo)所在位置的單詞4、跳到某一行:"ctrl + g" Source Insight是閱讀和編寫代碼的好東東,基本上也算得上是經(jīng)典之作了,雖然還有一點(diǎn)點(diǎn)小bug,不過對(duì)于我們這些C程序員來說可是一旦擁有別無所求。下 列小技巧是在工作中同事整理總結(jié)的,對(duì)提高工作效率多少有點(diǎn)幫助,其中有些是對(duì)應(yīng)于SVN的,沒有使用SVN做版本管理的人就不要白費(fèi)力氣了。ShellExecute open explorer /e,/select,%f &
27、#160; /*作用是在資源管理器中打開當(dāng)前編輯文件并選中*/ /*可以設(shè)置快捷鍵如ctrl+e,這樣能很方便的在資源管理器打開對(duì)應(yīng)的文件,并進(jìn)行tortoiseSVN的相關(guān)操作*/X:Progra1TortoiseSVNbinTortoiseProc.exe /command:log /path:% /notempfile /closeonend /*使用前注意更改對(duì)應(yīng)的bin安裝路徑*/&
28、#160; /*作用是直接查看當(dāng)前文件的svn log*/ /*可以設(shè)置快捷鍵如ctrl+l*/X:Progra1TortoiseSVNbinTortoiseProc.exe /command:diff /path:% /notempfile /closeonend /*使用前注意更改對(duì)應(yīng)的bin安裝路徑*/ /*作用是直接查看當(dāng)前文件和基準(zhǔn)版本的比較*/ /*可以設(shè)置快捷鍵如ctrl+d*/
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024個(gè)人的汽車抵押借款合同范本參考
- 2024個(gè)人對(duì)公司借款合同常用范本
- 鹽城師范學(xué)院《信息化審計(jì)技能訓(xùn)練》2022-2023學(xué)年第一學(xué)期期末試卷
- 2024旅店服務(wù)合同糾紛
- 人教版四年級(jí)上冊(cè)數(shù)學(xué)第六單元《除數(shù)是兩位數(shù)的除法》測(cè)試卷含答案【b卷】
- 2024工程吊籃租賃合同模板
- 年產(chǎn)3000噸玻璃纖維制品項(xiàng)目環(huán)評(píng)報(bào)告表
- 2024電視機(jī)購(gòu)銷合同
- 鹽城師范學(xué)院《曲式與作品分析》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024快遞加盟合同協(xié)議模板
- 物業(yè)保潔員培訓(xùn)教程
- 山西省太原市2024-2025學(xué)年高三上學(xué)期期中物理試卷(含答案)
- 酒店崗位招聘面試題與參考回答2025年
- (統(tǒng)編2024版)道德與法治七上10.1愛護(hù)身體 課件
- 公安接處警培訓(xùn)
- GB/T 30391-2024花椒
- 供電線路維護(hù)合同
- JGJ18-2012鋼筋焊接及驗(yàn)收規(guī)程
- 胸部術(shù)后護(hù)理科普
- 鞋子工廠供貨合同模板
- 2024碼頭租賃合同范本
評(píng)論
0/150
提交評(píng)論