轉:Source Insight經典教程

來源:互聯網
上載者:User

 

Source Insight經典教程 

Source Insight實質上是一個支援多種開發語言(java,c ,c 等等)的編輯器,只不過由於其尋找、定位、彩色顯示等功能的強大,常被我們當成原始碼閱讀工具使用。

作為一個開放原始碼的作業系統,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”按鈕結合後者進行全域的標記尋找。

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

圖6 Reference的搜尋結果

                                                                    Source Insight設定

1、背景色選擇 
    要改變背景色Options->preference->windows background->color設定背景色

2、解決字元等寬對齊問題。
    SIS預設字型是VERDANA,很漂亮。這網頁上應該也是用的VERDANA字型。但由於美觀的緣故,VERDANA字型是不等寬的。比如下面兩行
    llllllllll
    MMMMMMMMMM
    同樣10個字元,長度差多了.用VERDANA來看程式,有些本應該對齊的就歪了。解放方法是使用等寬的字型,但肯定比較醜。比較推薦的是用Courier New。3、解決TAB鍵縮排問題
    Options-> Document Options裡面的右下角Editing Options欄裡,把Expand tabs勾起來,然後確定。OK,現在TAB鍵的縮排和四個空格的縮排在SIS裡面看起來就對齊咯4、SI中的自動對齊設定:
    在C程式裡, 如果遇到行末沒有分號的語句,如IF, WHILE, SWITCH等, 寫到該行末按斷行符號,則新行自動相對上一行縮排兩列。
    Option->Document option下的Auto Indient中Auto Indient Type有三種類型 None,Simple,Smart。個人推薦選用Simple類型。5、向項目中添加檔案時,只添加特定類型的檔案(檔案類型過濾器)
    編輯彙編代碼時,在SIS裡建立PROJECT並ADD TREE的時候,根據預設設定並不會把該TREE裡面所有彙編檔案都包含進來
    只加了.inc和.asm尾碼的,.s尾碼的沒有。而且用SIS開啟.s的檔案,一片黑白沒有色彩,感覺回到DOS的EDIT時代了…… 
    解決方案是在Options->Document Options裡面,點左上的Document Type下拉式功能表,選擇x86 Asm Source File,
    然後在右邊的File filter裡*.asm;*.inc;的後面加上*.s;接著CLOSE就可以了。
    上面問題解決了,但注意加入*.s後還需要重新ADD TREE一遍才能把這些彙編加到PROJECT裡面。6、添加檔案類型
    使用者可以定義自己的類型,Options->Document Options->add type,定義檔案類型名以及檔案名稱尾碼。
    勾選include when adding to projects在添加目錄下檔案到工程是該類檔案就會添加進SI的工程。
    如果需要將所有檔案添加進SI的工程,可以定義一種檔案類型*.*。  7、恢複ctrl+a的全選功能
    通過關鍵詞save 找到save all,更改為ctrl+shift+a,通過關鍵詞select找到select all,更改為ctrl +a

Source Insight常用的快速鍵:
    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
    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 : incremental search
    Shift+Ctrl+f: search in project
    shift+F8 : hilight word
    
Source Insight的視窗操作:
    project window Ctrl+O開啟 
    symbol window Alt+F8開啟和關閉
    Contex Window 自訂鍵開啟和關閉
    Relation Window 自訂鍵開啟 先鎖定再重新整理聯絡

在Source Insight中添加自訂功能的步驟如下:
1.Source Insight中,Options->Custom Commands...->Add...,New Command name 隨便寫,我的是"Edit with Vim" 
2.Run中寫入: "C:/Program Files/Vim/vim63/gvim.exe" --remote-silent +%l %f 
意思是在當前已經開啟的gvim視窗裡面開啟當前的檔案,並且跳轉到指定行 
%l為當前的行號,%f為檔案名稱 
使用 --remote-silent 的作用是,如果已經開啟了對應檔案,就不會開啟第二次,而是在已經開啟的檔案裡跳轉到對應行 
3.還是同一個對話方塊裡面,選擇Keys->Assign New Key...->按F12,如果你已經將F12設定給其他命令,選擇其他的按鍵就行了

下面是一些常用自訂功能:( CUSTOM COMMANDS )

開啟資源管理員並選中當前檔案
ShellExecute open explorer /e,/select,%f
查看log
"C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe" /command:log /path:%f /notempfile /closeonend
diff
"C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe" /command:diff /path:%f /notempfile /closeonend
取得鎖定(check out)
"C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe" /command:lock /path:%f /notempfile /closeonend
提交(check in)
"C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe" /command:commit /path:%f /notempfile /closeonend
更新(update)
"C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe" /command:update /path:%f /notempfile /closeonend
更新整個目錄(update all)
"C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe" /command:update /path:*.* /notempfile /closeonend
取消鎖定(undo check out)
"C:/Program Files/TortoiseSVN/bin/TortoiseProc.exe" /command:revert /path:%f /notempfile /closeonend
在ultriEdit中編輯
"C:/Program Files/UltraEdit-32/uedit32" %f
在vim中編輯並定位到當前行
"C:/Program Files/Vim/vim63/gvim.exe" --remote-silent +%l %f

匯總其他小技巧:

讓{ 和 } 不縮排:

Options->Document Options->Auto Indent->Indent Open Brace/Indent Close Brace

hao space: SourceInsight 小技巧
1、按住"ctrl", 再用滑鼠指向某個變數,點擊一下,就能進入這個變數的定義。

2、今天把一個用sourceinsight排版整齊的C檔案,偶然用VC開啟一看,全亂了。研究了半天,發現SI對每個字元的寬度不太一致。
    請教同事發現選上"view --> draft view", 就可以讓每個字元的寬度一致了。快速鍵是 "Alt + F12"

3、"shift+F8" 標亮所有文本中游標所在位置的單詞

4、跳到某一行:"ctrl + g"

 

Source Insight是閱讀和編寫代碼的好東東,基本上也算得上是經典之作了,雖然還有一點點小bug,不過對於我們這些C程式員來說可是一旦擁有別無所求。下 列小技巧是在工作中同事整理總結的,對提高工作效率多少有點協助,其中有些是對應於SVN的,沒有使用SVN做版本管理的人就不要白費力氣了。

ShellExecute open explorer /e,/select,%f
        /*作用是在資源管理員中開啟當前編輯檔案並選中*/
        /*可以設定快速鍵如ctrl+e,這樣能很方便的在資源管理員開啟對應的檔案,並進行tortoiseSVN的相關操作*/

X:/Progra~1/TortoiseSVN/bin/TortoiseProc.exe /command:log /path:% /notempfile /closeonend
        /*使用前注意更改對應的bin安裝路徑*/
        /*作用是直接查看當前檔案的svn log*/
        /*可以設定快速鍵如ctrl+l*/

X:/Progra~1/TortoiseSVN/bin/TortoiseProc.exe /command:diff /path:% /notempfile /closeonend
        /*使用前注意更改對應的bin安裝路徑*/
        /*作用是直接查看當前檔案和基準版本的比較*/
        /*可以設定快速鍵如ctrl+d*/

                                       Source Insight中的檔案過濾器

遇到在建立工程的時候,需要加入一些除了.c .h 等之外的檔案,比如.s,.scf ,Makefile和ReleaseNotes等檔案,而每次建立工程的時候,即使取消了shown only known document types,和在點擊Add All之後選擇了Recusively add lower sub-directories ,也還是不能正常識別這類檔案,也就不能加入進工程,只能我們自己手動雙擊添加到工程中,如果檔案少還無所謂,但是包含了很多子檔案夾的大工程,這樣實在不可行。

百度了下,終於發現解決辦法了:

開啟Source Insight,在建立工程之前,進入

Options -> Document Options... Alt-T    -> 點擊Document
Type
的下拉框,然後選擇Make File,在右邊的File Filter中,在原先的*.mak後面加上一個分號,即多個不同過濾規則以分號間隔開,再加上*makefile,變成 *.mak;*makefile,並且選中Include
when adding to projects
,這樣,以後再建立工程的時候,就可以識別makefile或Makefile了(好像此處Source Insight並不區分大小寫)。

類似的原理,給其他你想要加入的不同的類型的檔案,分別加入到原先的一些檔案類型後面,注意要用分號隔開,或者直接建立一個檔案類型,然後寫上對應的顧慮規則,比如

點擊 Add Type,填入新檔案類型的名字Scatter File,File Filter中寫上*.scf,注意再選中下面的Include when adding to projects,這樣就建立了一個新的檔案類型, 以後建立工程加入檔案時候,系統就能夠識別尾碼是scf的檔案了。

當然感興趣的,還可以對你建立立的檔案類型進行一些格式化設定。包括Parsing,Tab等等設定。

 

中文系統下.WinCfg的按鈕的提示是方塊,無法正常提示.Source Insight 也無法顯示中文和輸入中文,都是亂碼.也無法用拷貝的方式加入到當中.而同樣的環境下.WINDOWS的寫字板程式能正常的顯示和用SCIM輸入中文.

  根源在WINE使用Tahoma字型顯示對話方塊,這個字型無法正常顯示中文,補救的方法有兩種,方法1: 一種是修改註冊表,用regedit編輯Wine 註冊表.執行如下命令:wine regedit將下列項註冊表目錄設為空白.(我是逐一刪除)/HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/FontSubstitutes重新運行winecfg 後,對話方塊下面的”確定“,”取消“和”應用“正常顯示.但是有一些對話方塊程式仍然顯示亂碼。 全英文環境需要用如下命令來執行env LANG=zh_CN.UTF-8 wine XXX 方法22.1 從Windows拷貝Windows 預設字型,宋體字型,並將MS Shell Dlg的值設為 simsun(宋體)首先 windows xp 的 Fonts 目錄下,把 simsun.ttc (即宋體)複製到 ~/.wine/drive_c/windows/fonts 2.2 將下列已經修改好的reg註冊表檔案匯入系統,主要是把對話方塊字型換成宋體。執行wine regedit zh.reg 2.3 source insight 此時仍無法顯示中文,使用網上提供的gdi32.dll.so 補丁後,source Insight 能部分顯示GBK的中文檔案內容,方法  mv /usr/local/lib/wine/gdi32.dll.so /usr/local/lib/wine/gdi32.dll.so.backup  cp gdi32.dll.so /usr/local/lib/wine/  2.4 設定riched20.dll 開啟winecfg,在libraries選項頁下,添加riched20.dll和riched32.dll (別忘複製這兩個檔案到你wine的system32目錄下) ~/.wine/drive_c/windows/system32然後選edit,都設為native 

這樣source Insight 的編輯區仍然無法輸入漢字(可能採用非標準控制項)但是標準的檔案對話方塊輸入框都能輸入中文,並且能拷貝到編輯區中。也可以用WINDOWS的記事本程式書 寫漢字。大段拷貝過來。(但仍然有部分亂碼)但好象也只能做到這一步了,本身SI對漢字的支援就不好。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.