1. 程式人生 > >Source Insight 經典教程

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介面。在工具條上有幾個值得注意的地方,如圖所示,圖中內凹左邊的是工程按鈕,用於顯示工程視窗的情況;右邊的那個按鈕按下去將會顯示一個視窗,裡邊提供游標所在的函式體內對其他函式的呼叫圖,通過點選該窗體裡那些函式就可以進入該函式所在的地方。

由於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核心的四千五百九十一個檔案加入的。

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

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


Reference功能是Source Insight的特色之一,它可以在速度極快的在整個工程中找到所有的標記,並且在該行程式的前邊加上紅色箭頭的小按鈕連結上。圖6是一個Reference搜尋後的結果,它可以有兩種模式,一種集中顯示結果,圖6顯示的就是這種模式,在這種模式下,可以通過前邊的紅色箭頭小按鈕進入另外一種模式,該標記的具體的所在處,也可以通過標記的具體所在處點選紅色箭頭小按鈕進入警種模式,還可以通過工具條上的兩個紅色小箭頭直接在第二種模式下前後移動,察看相應資訊。它的這個強大的功能使得閱讀Linux源程式有如神助。但是要注意的是,當進行了第二次“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等等設定。

相關推薦

Source Insight 經典教程

Source Insight實質上是一個支援多種開發語言(java,c ,c 等等)的編輯器,只不過由於其查詢、定位、彩色顯示等功能的強大,常被我們當成原始碼閱讀工具使用。 作為一個開放原始碼的作業系統,Linux附帶的原始碼庫使得廣大愛好者有了一個廣泛學習、深入鑽研的

轉:Source Insight入門教程

  Source Insight入門教程 轉載自:http://www.cnblogs.com/olvo/archive/2012/05/04/2483424.html   進入到Temp Pr

Source Insight簡單教程

原來Instant Contiki主要是用來做模擬的,而Keil和IAR這些編譯工具主要是和開發板銜接,今天師兄推薦我Source Insight軟體,用它來看Contiki的原始碼,之前為這個問題糾結了幾天了。 在網上找了一個教程,出自CSDN的一篇博文,原網址: 作

source insight使用教程

一 、介面瞭解 1、工具欄 1) 2) a、 藍黑色的箭頭可以轉到你前一次和後一次編輯過得地方 b、可以在不同的查詢結果之間跳轉 c、跳轉行 (ctrl + G) d、跳轉到 ctrl + M的標記處 3) Jump to Definition

Source Insight上手教程

目錄 最近剛參加工作,第一個任務就是檢視專案的原始碼,熟悉程式碼結構。於是乎就簡單學習了Source Insight。在這裡就轉載別人的文章當做自己的筆記,便於自己以後查詢。 為什麼要用Source Insight呢?貌似是因為比完整的IDE要更快

source insight 使用教程

若干年前曾寫個一篇關於source insight巨集的使用文章,放到這裡後就一直沒有理會。過了很久之後,偶然的一次查詢,才知道已經有不少地方引用那篇文章,想來文章還是有一定用處的。 前段時間剛好有空閒時間,於是又寫一篇關於source insight的文章,這次側重於實用

Source Insight入門教程

進入到Temp Project視窗分別可以以檔案列表的方式,列出所有的檔案,每個窗體下邊有一排按鈕,左邊的視窗(secondView.cpp)從左至右分別為:按字母順序排列所有標記、按照檔案中行數順序排列標記、按照型別排列標記、瀏覽本地檔案標記、標記視窗屬性。右下角的視窗(Temp Project)從左

Source Insight的幾個經典用法

  1.如何找回失去的context window   context window 在看程式時很有用,當用戶指向某個函式或變數時,在context window中都會有該變數或函式的定義;但有時會為了增加程式的容量或者不小心,將context window變成獨立視窗,

Source Insight 中文註釋為亂碼解決辦法(完美解決,一鍵搞定)【轉】

ash save sys lan sim edit ext pan character 轉自:http://blog.csdn.net/bjarnecpp/article/details/70174752 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 S

Source Insight基本使用和快捷鍵

上下 body jump con cat 工具欄 tro 右鍵 ati Source Insight基本使用和快捷鍵   為什麽要用Source Insight呢?貌似是因為比完整的IDE要更快一些,比較利於查看大量的代碼。   軟件的安裝很簡單,設置好

source insight 4.0.086破解

source 恢復 原版 安裝目錄 cnblogs .cn strong 開始 href ---恢復內容開始--- source insight 4.0.086 破解: 首先安裝原版的source insight 4.0.086;這裏自己百度搜索; 安裝完成後,先別打

Source Insight 自定義命令說明

mit sage folder lex following 操作 tex 啟動 %d 1.Custom Command Dialog box Command 顯示當前選中命令的名字. 下拉列表中包含了所有的自定義命令. Run 命令行,當調用自定義命令時,這個命令行就會被執

source insight totalcmd 中文目錄

ech %x echo utf-8 star for pps .bat tar @echo off for /F "usebackq delims=" %%a in (`echo %1^^^|iconv -f utf-8 -t gb18030`) do ( set xxxx

Kafka入門經典教程

pom.xml shm partition 讀寫操作 ext xtend -a 精確 提高 一、基本概念 介紹 Kafka是一個分布式的、可分區的、可復制的消息系統。它提供了普通消息系統的功能,但具有自己獨特的設計。 這個獨特的設計是什麽樣的呢? 首先讓我們看幾個基本的消息

【轉載】【軟件安裝】Source Insight 4.0常用設置

select ext lang 2.3 symbol c# avi b2c ber 1.Source Insight簡介 Source Insight是一個面向軟件開發的代碼編輯器和瀏覽器,它擁有內置的對C/C++, C#和Java等源碼的分析,創建並動態維護符號數據庫,並

Source Insight 常用設置

switch 下拉菜單 eve 寫上 forward 種類型 key 想要 local 1、背景色選擇 要改變背景色Options->preference->windows background->color設置背景色2、解決字符等寬對齊問題

Source Insight symbol not found

wid 文件 for 無法 data- -i AD style filesize 使用SourceInsight查看源代碼時,發現點擊查看相關類型時,無法關聯到其代碼,出現 symbol not found, 然而明明在我的頭文件有定義的 網上查了一下主要是因

source Insight 添加python 工程

AR lan master 設置 https 分享圖片 tar nbsp net 1. 下載python的識別文件 Python.CLF 2.設置 source Insight 添加python 工程

Android源碼閱讀工具——在Ubuntu下使用Source Insight

多人 oge 路徑 BE log scree 完全 space 2.0 引言 在Windows下,相信很多朋友都習慣用Source Insight來閱讀分析源代碼了,對於LINUX下面的工具,確實有比較高效的,配置起來起對比較麻煩,也比較繁瑣,相信很多人肯定希望能在Linu

source insight使用技巧

Source InsightSource Insight的Lookup References中Search Method的默認設置是Look Up Reference,這種搜索是最快的,因為是從已經建立好的工程中構建了數據庫來保存一些變量和函數等的信息。如果選成Simple String的話,不論任何單個的字