emacsでソースコード解析

長らくエディタはGeanyを使ってたんだけど、最近はドライバを作ることも多く、ソースコードを参考にするのにLinux Kernelを追いかけることも多くなってきた。 ソースコードを追いかけるのはcscopeを使っているんだけど、エディタは久々にEmacsに戻し、ソースコードを追いかける環境を整えることにしてみた。

ソースコードを追いかけるのはcscopeとglobalの環境を整えてみた。

ここ5年ほどはGeanyを使用してたけど、キー操作はEmacsの操作で叩いてしまうことが多いので誤動作とか多かったけど…。

Emacsのインストール

% sudo apt-get install emacs24

cscope環境の整備

Emacs環境でcscopeを使用する場合、xscope-elを使用する。

参考にしたのは次のサイトです。

http://www.emacswiki.org/emacs/CScopeAndEmacs

cscopeのインストール

% sudo apt-get install global

ダウンロード

xcscopeのパッケージを次のサイトからバージョンの合うものをダウンロードする。

http://packages.ubuntu.com/search?keywords=xcscope&searchon=names&suite=all§ion=all

インストール

% dpkg -i xcscope-el_1.0-2_all.deb

Emacsの設定

.emacsに次を追加する。

(load-file "/usr/share/emacs/site-lisp/xcscope/xcscope.el")  
(require ''xcscope)  
(setq cscope-do-not-update-database t)  

インデックスの生成

% cscope-indexer -r 

(setq default-tab-width 4)

コマンド

C-c s s (カーソルの置かれた)シンボルを検索
C-c s d (カーソルの置かれた)シンボルの定義を検索
C-c s c (カーソルの置かれた)関数を呼んでいる関数群を検索
C-c s C (カーソルの置かれた)関数から呼び出している関数群を検索
C-c s t テキスト文字列を検索
C-c s e egrepパターンで検索
C-c s f ファイル検索
C-c s i #include しているファイルを検索
C-c s u マークをポップ(元のファイルに戻る)

global

% sudo apt-get install global

Emacsの設定

.emacs

(require ''gtags)
(global-set-key "M-t" ''gtags-find-tag)
(global-set-key "M-r" ''gtags-find-rtag)
(global-set-key "M-s" ''gtags-find-symbol)
(global-set-key "C-t" ''gtags-pop-stack)

タグの生成

% gtags

コマンド

C-t gtagsでジャンプする一つ前の状態に戻る M-s 指定した変数、定義の定義元を探す M-r 指定した関数が参照されている部分を探す M-t 指定した関数が定義されている部分をさがす