1. 程式人生 > >[daily] 如何用emacs+xcscope閱讀核心原始碼

[daily] 如何用emacs+xcscope閱讀核心原始碼

假設

首先我假設:

  1. 你已經學會了使用emacs。
  2. 同時也學會了使用cscope。
  3. 讀過cscope官網上,關於emacs的使用指引。
    它的指引就是請你去閱讀xcscope.el的原始碼,當然這無可厚非,而且非常好。
    因為原始碼裡的註釋寫的非常的詳細。

如果,你不滿足以上假設。也可以繼續讀下去,或者看一下我的另兩篇短文。他們可以幫助你更快的定位學習資源。
![daily] cscope
![efficiency] emacs入門

問題

然後基於前邊的資訊,你在初次使用的時候,很可能會遇到想我一些的問題,就是在kernel工程下無論如何也找不到symbol
即使cscope們生成的都是正確的。

原因和解決

那是因為你,缺少cscope.files檔案。這個檔案是xcscope所需要的。我不清楚為什麼在別的工程並不需要,比如strongswan。
總之,你在emacs裡,在進入了你所在的工程,並打開了c檔案(emacs有一個巨集在識別到c檔案是在開啟cscope minor模式),
執行以下函式:

cscope-index-files

這個時候,就可以生成cscope.files檔案,並正常索引了。而且如果你沒有cscope.out的時候,他還也會幫你同步生成。

換句話說,你根本無需在命令列裡自己做索引,只用這個函式就好了。

擴充套件

但是kernel有一點特殊的,就是它不需要所以系統include目錄。
而且,他很大,我們希望用-q引數加速。
所以,你其實可以提前在命令列裡自己做index。就如同你以前用vim的時候一直乾的那樣。

cscope -b -R -k -q

總結

所以,回到我們的標題,用emacs + xcscope 讀kernel程式碼時,如何做呢?

  1. 用cscope生成kernel的index。
  2. 在emacs裡做cscope.files的檔案。

雕蟲小技,各位見笑。