當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]vim+ctags+cscope 打造Android源碼閱讀工具 http://hi.baidu.com/snownight/blog/item/2f6e6327fe8e0210918f9d94.ht

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

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

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

3.修改~/.vimrc使之可以自動(dòng)加載tags和cscope.out文件,注意要使用ctags和cscope數(shù)據(jù)庫(kù),必須在android源碼頂層運(yùn)行vim程序

我的.vimrc如下:

"開關(guān)tag窗口

nnoremap :TlistToggle

?

"使用右側(cè)tag窗口

"let Tlist_Use_Right_Window=1

?

"一般設(shè)置.

"set nocompatible "VIM而不是VI

set history=50 "歷史記錄50條

set fenc=utf-8 "設(shè)置默認(rèn)語(yǔ)言為8位unicode

"man Q gq "屏蔽Q, 以免進(jìn)入Ex模式

filetype on "打開文件類型檢測(cè)

?

"

""顏色設(shè)置.

colorscheme delek "主題

"colorscheme evening "主題

syntax on "語(yǔ)法高亮

"set hls " 查找文本高亮

?

"界面設(shè)置.

set ruler "顯示當(dāng)前位置

set number "顯示行號(hào)

""set nonumber "不顯示行號(hào)

?

"格式設(shè)置.

set autoindent "自動(dòng)縮進(jìn)

set smartindent "智能縮進(jìn)

set cindent "C縮進(jìn)

set tabstop=4 "硬TAB

set softtabstop=4 "軟TAB

set shiftwidth=4 "縮進(jìn)空格數(shù)

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.但是這樣有個(gè)問(wèn)題就是每次必須從android頂層運(yùn)行vim,從子目錄中運(yùn)行ctags和cscope無(wú)法正常使用。因此我寫了一個(gè)腳本,用來(lái)解決這個(gè)問(wèn)題

#! /bin/bash?

i=`pwd`?

cd ~/source/unicore_src?

vim $i/$1 $2 $3?

cd $i

保存成mvim可執(zhí)行文件,放到PATH環(huán)境變量中,就可以在子目錄中通過(guò)mvim來(lái)打開android源碼,并進(jìn)行各種跳轉(zhuǎn)了。

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




使用Vim+Ctags+Cscope閱讀源代碼
http://www.man.lupaworld.com/thread-49968-1-1.html 代碼閱讀工具簡(jiǎn)介

對(duì)于學(xué)習(xí)Linux內(nèi)核的人來(lái)說(shuō),源代碼的閱讀尤為重要。因?yàn)樗性O(shè)計(jì)思想、內(nèi)部機(jī)制都是
以代碼的形式實(shí)現(xiàn),所有的資料也都是為了更好的詮釋代碼。那么一個(gè)好的閱讀工具,能
夠提高閱讀的效率和效果。常見的代碼閱讀工具有,Source Navigator、Source Insight
、lxr、Cscope、Kscope等。

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

Vim+Ctags+Cscope

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

Vim

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

colorscheme elflord "我使用這個(gè)
colorscheme darkblue
colorscheme evening
colorscheme murphy
colorscheme torte
colorscheme desert

Ctags

在源代碼根目錄下執(zhí)行 ctags -r 命令用來(lái)為程序源代碼生成標(biāo)簽文件,其-r選項(xiàng)表示遞
歸操作,同時(shí)為子目錄也生成標(biāo)簽文件。vim利用生成的標(biāo)簽文件,可以進(jìn)行相應(yīng)檢索、并
在不同的文件C語(yǔ)言元素之間來(lái)回切換。

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

:tag
跳到第一個(gè)定義處,優(yōu)先跳轉(zhuǎn)到當(dāng)前文件
:tnext
跳到第一個(gè)
:tfirst
跳到前count個(gè)
:[count]tprevious
跳到后count個(gè)
:[count]tnext
跳到最后一個(gè)
:tlast
你也可以在所有tagname中選擇:
:tselect tagname

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

Cscope

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

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

在對(duì)應(yīng)某一項(xiàng)中輸入查找條件,回車即可進(jìn)行查詢,并將結(jié)果顯示在顯示面板。

應(yīng)用實(shí)例

下面以使用cscope閱讀內(nèi)核源代碼為例:

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

標(biāo)簽文件、索引信息文件只需要第一次或者代碼發(fā)生變動(dòng)時(shí)生成,以后使用直接運(yùn)行
cscope即可。
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉