Browse source code with emacs plus cscope on Linux

  1. install emacs and cscope.

E.g., on Ubuntu, run

sudo apt-get install cscope
  1. add
(require 'xcscope)

into ~/.emacs. Also make sure the file xcscope.el is under load-path.

  1. cd source code path.

E.g.,

cd /home/daniel/Desktop/linux-2.6.31.5
  1. Generate the symbol tables with the following commands:
find . -name "*.h" -o -name "*.c" -o -name "*.cpp" | xargs etags find . -name "*.h" -o -name "*.c" -o -name "*.cpp" > cscope.files cscope -Rbkq -i cscope.files 2>/dev/null
  1. Start emacs with a file name to open it directly. Or

Set default editor to emacs:

export EDITOR=emacs

then start cscope:

cscope -d

TIPS:

  1. Use CTRL+d to exit cscope; CTRL+X CTRL+C to exist emacs.

  2. Use Meta+. to find the definition of the symbol currently under cursor.

  3. You can ignore above steps and run the following in emacs to build symbol tables:

C-c s a 设定初始化的目录,一般是代码的根目录 C-s s I 对目录中的相关文件建立列表并进行索引 C-c s s Find symbol. C-c s d Find global definition. C-c s g Find global definition (alternate binding). C-c s G Find global definition without prompting. C-c s c Find functions calling a function. C-c s C Find called functions (list functions called from a function). C-c s t Find text string. C-c s e Find egrep pattern. C-c s f Find a file. C-c s i Find files #including a file. C-c s b Display *cscope* buffer. C-c s B Auto display *cscope* buffer toggle. C-c s n Next symbol. C-c s N Next file. C-c s p Previous symbol. C-c s P Previous file. C-c s u Pop mark. C-x o Switch from one window to another.

RET=Select, SPC=Show, o=SelectOneWin, n=ShowNext, p=ShowPrev, q=Quit, h=Help