vim+ctags+cscope 常用技巧和命令

首先聲明,本文不適用於初學者!

1 編譯ctags需要的文件

  #make ARCH=x86 tags

  ARCH=x86 的意思是除了索引指定的x86體系結構的代碼外,不索引其他體系結構的想關代碼

2 編譯cscope需要的文件

  #make ARCH=x86 cscope

3 在vim中用ctags瀏覽

  ts do_fork  等同於光標停在do_fork上,再按CTRL + ]

  tn          下一個(next)

  tp          上一個(previous)

  tf          第一個(first)

  tl          最後一個(last)

4 在vim中用cscope瀏覽

 cs add cscope.out        #添加一個 connection,瀏覽內核時經常發現 cscope 鏈接斷開

                          可以調用:cs a cscope.out

:cs show                  #顯示所有 connections

:cs kill <#>              #殺死第#號 connection,第#號就是:cs show 顯示出來的

:cs reset                 #reset 所有 connections

:cs find c|d|e|f|g|i|s|t

解釋:

                     c   查找 name 被哪些函數調用

                     d   查找 name 調用了哪些函數

                     e   egrep 句型

                     f   查找名爲 name 的文件

                     g   查找 name 的定義

                     i   查找#include 本 name 的文件

                     s   查找 name 這個 C 符號

                     t   查找何處對 name 賦值

        對 Linux 內核來說,如果既有 tags 文件,又有 cscope.out 文件,則 Vim 中:set cst

意味着使用 cscope 風格的^],也就是:tag 命令。 於是:

              如果想用 ctags 找到 do_IRQ:

              :ts do_IRQ

              如果想用 cscope 找到 do_IRQ:

              :ta do_IRQ

5 CTRL + T 返回上一步的操作處


最後給大家推薦一些內核相關的經典圖書:

入門推薦: LKD2 - 《Linux 內核設計與實現-第 2 版》

      從入門開始,介紹了諸如中斷、系統調用、虛擬文件系統、同步與互斥、

      內存管理、進程控制等方面,內容比較淺顯易懂,是入門的好書。

      優點: 適合入門 (個人認爲,沒有比 LKD2 更優秀的內核入門圖書)

      缺點: 內容不夠深入,覆蓋面不廣。(對高手來說估計就像休閒材料)

3.1 ULK3 - 深入理解 Linux 內核-3rd

      一本很全面的 Linux 內核原理書。 書中以 2.6.11 爲示例版本,着重講述了

      x86 平臺的 Linux 內核實現。

      優點: 深入,全面

      缺點: N/A

      我覺得看完 ULK3 就是高手了:)    而且由於書中着重介紹了 X86 體系結構,也稱得

      上半個 x86 專家了。

3.2 《Linux 內核源代碼情景分析》

      以 2.4.0 爲例講解,注重代碼級別的剖析,對中斷、內存管理、文件系統、

      SMP、PCI 和 USB、IPC 的講解都是代碼級別的深入細緻。

      優點: 深入

      缺點: 針對的內核版本較舊,且每個「情景」都很長,不容易堅持讀完。

      FYI : 新手不要從《情景分析》開始學習內核,這樣只會增長你的學習週期。

3.3 LDD3 - Linux 設備驅動程序-3rd

    LDD3 寫的很精彩。 但如果要學會寫具體的驅動程序,還是得參照硬件的

    datasheet,讀一個內核中現成的驅動程序。

    FYI : 內核中自帶的驅動程序 skeleton:

            drivers/net/pci-skeleton.c 和 drivers/usb/usb-skeleton.c,分別是爲 PCI/USB

            驅動程序員提供的參考代碼。

    3.4 現代體系結構上的 Unix 系統 - 內核程序員的 SMP 和

Caching 技術

        這本書着重講解各種體系結構上的 Unix 實現注意事項,e.g. SMP 的同步與互斥、

        Cache 一致性問題。

        優點: 作者知識面非常廣,原理講得很清楚。

        缺點: 94 年的書,比較舊

    3.5 Intel & AMD CPU 參考手冊

        最好帶着問題有針對性的去讀 Intel & AMD 的手冊。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章