[daily] 如何用emacs+xcscope閱讀核心原始碼
阿新 • • 發佈:2019-01-07
假設
首先我假設:
- 你已經學會了使用emacs。
- 同時也學會了使用cscope。
- 讀過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程式碼時,如何做呢?
- 用cscope生成kernel的index。
- 在emacs裡做cscope.files的檔案。
雕蟲小技,各位見笑。