posts - 189,comments - 115,trackbacks - 0
          vim+ctags+cscope 打造Android源碼閱讀工具
          http://hi.baidu.com/snownight/blog/item/2f6e6327fe8e0210918f9d94.html
          vim+ctags+cscope 打造Android源碼閱讀工具
          2011-02-17 10:11

          1. 在Android源碼頂層目錄下運行ctags -R 生成tags文件

          2. 在Android源碼頂層目錄運行cscope -Rbq,生成cscope.out文件

          3.修改~/.vimrc使之可以自動加載tags和cscope.out文件,注意要使用ctags和cscope數據庫,必須在android源碼頂層運行vim程序

          我的.vimrc如下:

          "開關tag窗口

          nnoremap <silent> <F8> :TlistToggle<CR>

           

          "使用右側tag窗口

          "let Tlist_Use_Right_Window=1

           

          "一般設置.

          "set nocompatible "VIM而不是VI

          set history=50 "歷史記錄50條

          set fenc=utf-8 "設置默認語言為8位unicode

          "man Q gq "屏蔽Q, 以免進入Ex模式

          filetype on "打開文件類型檢測

           

          "

          ""顏色設置.

          colorscheme delek "主題

          "colorscheme evening "主題

          syntax on "語法高亮

          "set hls " 查找文本高亮

           

          "界面設置.

          set ruler "顯示當前位置

          set number "顯示行號

          ""set nonumber "不顯示行號

           

          "格式設置.

          set autoindent "自動縮進

          set smartindent "智能縮進

          set cindent "C縮進

          set tabstop=4 "硬TAB

          set softtabstop=4 "軟TAB

          set shiftwidth=4 "縮進空格數

          set expandtab "空格替換TAB

          "set smarttab "智能TAB

          "

          set showmatch "顯示匹配

          "set matchtime=5 "1/10秒延遲

          "set hlsearch "高亮搜索

          "set incsearch "搜索中匹配

          set tags=tags; "ctags

          "set autochdir "ctags

           

          4.但是這樣有個問題就是每次必須從android頂層運行vim,從子目錄中運行ctags和cscope無法正常使用。因此我寫了一個腳本,用來解決這個問題

          #! /bin/bash 

          i=`pwd` 

          cd ~/source/unicore_src 

          vim $i/$1 $2 $3 

          cd $i

          保存成mvim可執行文件,放到PATH環境變量中,就可以在子目錄中通過mvim來打開android源碼,并進行各種跳轉了。

          使用cscope的最大好處是可以替代source insight的功能,并可以快速定位某個函數在哪些地方被調用,非常方便




          使用Vim+Ctags+Cscope閱讀源代碼


          http://www.man.lupaworld.com/thread-49968-1-1.html
          代碼閱讀工具簡介

          對于學習Linux內核的人來說,源代碼的閱讀尤為重要。因為所有設計思想、內部機制都是
          以代碼的形式實現,所有的資料也都是為了更好的詮釋代碼。那么一個好的閱讀工具,能
          夠提高閱讀的效率和效果。常見的代碼閱讀工具有,Source Navigator、Source Insight
          、lxr、Cscope、Kscope等。

            • &amp;quot;Source Navigator&amp;quot;是紅帽子公司的,以GNU GPL發布,可從官方網站[1]下載使用。
            • &amp;quot;Source Insight&amp;quot;目前只有Windows平臺的,官方網站[2]。需要注冊才能使用,或者
              從網上下載注冊機生成注冊碼。在Linux下通過wine模擬雖然可以方便使用,但它畢竟
              是Windows平臺的東西,并不能很自由的使用。
            • lxr(linux cross reference)[3]為程序源代碼建立索引數據庫,利用perl腳本CGI動態
              生成包含源碼的web頁面,你可以用任何一種瀏覽器查閱。缺點是需要服務器支持,還
              有速度。
            • &amp;quot;Cscope&amp;quot;[4]為終端下的代碼閱讀工具,資源消耗少,對那些忠于命令行的行操作的人
              ,使用起來更加方便、靈活。這也是這篇文章推薦使用的一個重要原因。也有人把
              Cscope和Emasc綁定閱讀源碼。當然工具的選取,也取決于個人習慣。

          Vim+Ctags+Cscope

          cscope的工作需要vim、ctags的配合,它們都是基于命令行的。在Ubuntu下,用戶只需執
          行“sudo apt-get install cscope cscope-indexer ctags vim-full”即可完成軟件安裝。
          下面只是給出了三種工具的常用方法,更多功能可查看man手冊,或者官方文檔。

          Vim

          vim被看作是專門為程序員打造的文本編輯器,其豐富的編輯命令都是常用的簡單字符,用
          戶很容易上手。vim可對180多種語言的語法高亮,對C語言自動縮進,真則表達式字符匹配
          查找,功能強大,并支持多個操作系統平臺。關于vim的使用,這里不做講解。vim中文文
          檔[5]。
          在Ubuntu下默認安裝的vim,沒有語法加亮功能。所以需要安裝vim-full,并在vim 配置
          文件 ~/.vimrc中添加一行 &amp;quot;syntax on&amp;quot; 這樣在vim中打開的源碼就有了語法高亮顯示。
          vim自帶了很多顏色主題,可以直接選取下面一行添加到vim配置文件當中,重新打開vim即
          可生效。

          colorscheme elflord &amp;quot;我使用這個
          colorscheme darkblue
          colorscheme evening
          colorscheme murphy
          colorscheme torte
          colorscheme desert

          Ctags

          在源代碼根目錄下執行 ctags -r 命令用來為程序源代碼生成標簽文件,其-r選項表示遞
          歸操作,同時為子目錄也生成標簽文件。vim利用生成的標簽文件,可以進行相應檢索、并
          在不同的文件C語言元素之間來回切換。

          在vim中ctags的簡單使用
          1) 跳轉到指定的函數進入vim后,用 “:tag func_name“ 跳到函數func_name處。使用tag
          命令時,可以使用TAB鍵進行匹配查找,繼續按TAB鍵向下切換。
          某個函數有多個定義時

          :tag
          跳到第一個定義處,優先跳轉到當前文件
          :tnext
          跳到第一個
          :tfirst
          跳到前count個
          :[count]tprevious
          跳到后count個
          :[count]tnext
          跳到最后一個
          :tlast
          你也可以在所有tagname中選擇:
          :tselect tagname

          如果想跳到包含block的標識符:“tag /block” 然后用TAB鍵來選擇。這里'/'就是告訴vim
          'block'是一個語句塊標簽。
          2)用“CTRL + ]“快捷鍵,跳轉到光標所在函數標識符的定義處。
          3)使用“CTRL + T”退回上層。如果想在以write_開頭的標識符中選擇一下, :tselect /^
          write_ 這里,'^'表示開頭,同理,'$'表示末尾。多個同名的標識符

          Cscope

          運行cscope命令,出現兩個面板,上方是一個查找結果的顯示面板,下方是一個查找條件
          指定面板。使用TAB鍵在兩個面板間切換,也可使用上下左右方向件和翻頁鍵在同一面板內
          貼換位置。選中顯示面板的某個項,回車即可進入該文件,這是調用vim打開文件,這時就
          可以結合ctags使用了。當然也可以直接使用vim打開文件,結合ctags閱讀源碼。
          使用前,必須現使用“cscope-indexer -r”命令遞歸生成索引信息文件。特殊情況下,還需
          要用戶使用find命令,主動生成索引信息文件,并指定給cscope工具。 cscope提供了如下
          九種查詢方式:

          Find this C symbol:
          #查找指定的C符號
          Find this global definition:
          #查找指定的全局定義
          Find functions called by this function:
          #查找指定函數調用的函數
          Find functions calling this function:
          #查找調用指定函數的函數
          Find this text string:
          #查找字符串
          Change this text string:
          #修改指定字符串
          Find this egrep pattern:
          #查找匹配字符
          Find this file:
          #查找指定文件
          Find files #including this file:
          #指定引用頭文件進行查找

          在對應某一項中輸入查找條件,回車即可進行查詢,并將結果顯示在顯示面板。

          應用實例

          下面以使用cscope閱讀內核源代碼為例:

          $ wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.27.6.tar.bz2
          #
          從Linux內核官網下載內核源代碼
          $ tar xvfj linux-2.6.27.6.tar.bz2
          #解壓文件
          $ cd linux-2.6.27.6
          #進入源代碼根目錄
          $ ctags -R
          #遞歸生成標簽文件
          $ cscope-indexer -r
          #遞歸生成索引信息文件
          $ cscope
          #使用cscope閱讀源碼

          標簽文件、索引信息文件只需要第一次或者代碼發生變動時生成,以后使用直接運行
          cscope即可。



          [1] http://sourcenav.sourceforge.net/
          [2] http://www.sourceinsight.com/
          [3] http://lxr.linux.no/
          [4] http://cscope.sourceforge.net/
          [5] http://vcd.gro.clinux.org/
          posted on 2011-08-25 13:30 MEYE 閱讀(4839) 評論(1)  編輯  收藏

          FeedBack:
          # re: vim+ctags+cscope 打造Android源碼閱讀工具
          2015-04-07 19:31 |
          貌似高深的扯淡,這種方式純粹是浪費時間!!,  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 霞浦县| 云林县| 松桃| 阳城县| 普定县| 正蓝旗| 瓮安县| 毕节市| 陆良县| 阳西县| 龙南县| 郓城县| 农安县| 聂拉木县| 泸水县| 通城县| 通化县| 织金县| 农安县| 阳信县| 河曲县| 江门市| 嘉义市| 诏安县| 平果县| 左云县| 博爱县| 桐柏县| 龙山县| 满城县| 铁力市| 山东省| 大余县| 宁波市| 香河县| 民和| 永福县| 衡山县| 宝坻区| 都匀市| 闽侯县|