亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3947 | 回復: 4
打印 上一主題 下一主題

[轉貼]用tags/cscope看內核源代碼-HOWTO [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2006-03-18 17:50 |只看該作者 |倒序瀏覽
作者:wheelz
來自:
http://www.linuxforum.net/forum/ ... K&Number=573982


看大家討論得熱烈,我也寫點。呵呵

其實內核原代碼的Makefile就包含了make tags/TAGS的選項,
但是生成的tags太大,因為包含了drivers等不常用的目錄。

因此參照內核的Makefile文件,寫了一個Makefile,
用來生成ctags/cscope/etags。

這樣,可以根據自己的需要,刪除和添加目錄。

我以前沒有用過tags/cscope,不知道有沒有更好的方法。歡迎指教。
也請大家補充tags/cscope的常用的和好用的命令,技巧。

一、用法

找一個空目錄,把附件Makefile拷貝進去。
然后在該目錄中選擇性地運行如下make命令:

注:SRCDIR用來指定內核源代碼目錄,如果沒有指定,
則缺省為/usr/src/linux/,如

$ make

將處理/usr/src/linux下的源文件,在當前目錄生成ctags, cscope


1) 只創(chuàng)建ctags

$ make SRCDIR=/usr/src/linux-2.6.12/ tags

2) 只創(chuàng)建cscope

$ make SRCDIR=/usr/src/linux-2.6.12/ cscope

3) 創(chuàng)建ctags和cscope

$ make SRCDIR=/usr/src/linux-2.6.12/

4) 只創(chuàng)建etags

$ make SRCDIR=/usr/src/linux-2.6.12/ TAGS


二、處理時包括的內核源文件:

1) 不包括drivers,sound目錄
2) 不包括無關的體系結構目錄
3) fs目錄只包括頂層目錄和ext2,proc目錄

對2.6.12.1內核,這樣生成的tags大約12M,cscopes大約19M

三、最簡單的ctags命令

----------------------
1) 進入

進入vim后,用

:tag func_name

跳到函數func_name

----------------------
2) 看函數(identifier)

想進入光標所在的函數,用

CTRL + ]

----------------------
3) 回退

回退用

CTRL + T

----------------------


我現在只會用這幾個命令,請大家說說其他常用的命令。

[ 本帖最后由 leviathan.alan 于 2006-3-18 17:51 編輯 ]

Makefile.zip

972 Bytes, 下載次數: 80

論壇徽章:
0
2 [報告]
發(fā)表于 2006-03-18 17:51 |只看該作者
查找標識符

:tag write_<TAB>

找到以write_開頭的標識符,如果有多個,繼續(xù)按<TAB>,直到找到想要的。


如果想跳到包含block的標識符

:tag /block

然后用<TAB>來選擇。

這里'/'就是告訴vim'block'是一個pattern。

如果想在以write_開頭的標識符中選擇一下,

:tselect /^write_

這里,'^'表示開頭,同理,'$'表示末尾。

論壇徽章:
0
3 [報告]
發(fā)表于 2006-03-18 17:52 |只看該作者
多個同名的標識符

如果某個函數有多個定義,':tag'命令會跳到第一個,如果當前文件有,則優(yōu)先用這個。
然后可以跳到下一個同名的
:tnext

跳到第一個
:tfirst

跳到前count個
:[count]tprevious

跳到后count個
:[count]tnext

跳到最后一個
:tlast


你也可以在所有tagname中選擇:
:tselect tagname

論壇徽章:
0
4 [報告]
發(fā)表于 2006-03-18 18:02 |只看該作者

  1. if has("cscope")
  2.                 set csprg=/usr/local/bin/cscope
  3.                 set csto=0
  4.                 set cst
  5.                 set nocsverb
  6.                 " add any database in current directory
  7.                 if filereadable("cscope.out")
  8.                     cs add cscope.out
  9.                 " else add database pointed to by environment
  10.                 elseif $CSCOPE_DB != ""
  11.                     cs add $CSCOPE_DB
  12.                 endif
  13. map <F2> :cstag <C-R>=expand("<cword>")<CR><CR>
  14. map g<Ctrl-]> :cs find g <C-R>=expand("<cword>")<CR><CR>
  15. map <F3> :cs find 0 <C-R>=expand("<cword>")<CR><CR>
  16. map <F4> :cs find f <C-R>=expand("<cword>")<CR><CR>
  17.                 set csverb
  18. endif
復制代碼

從幫助上看到的,自己稍微改了一點。

論壇徽章:
0
5 [報告]
發(fā)表于 2006-03-20 09:32 |只看該作者
學到不少東西
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP