今日のデバッガ環境巡り
Emacs 24.1 / Mac OS X(Lion)を使っているんだけれども、唐突にデバッグしたくなったので、いろいろ調べてみた。
結論をいうと、Emacserはみんな、gdbをtarballからbuildして承認すればいいよ! Vimerは cgdbでいいんじゃないかな。
え、Xcode?? なんですか、それは?
*Front End | *debugger | *status |
CUI | apple gdb (6.3) | so-so |
Emacs 24.1 | apple gdb (6.3) | bad |
Emacs 24.1 | macport gdb (7.3) | not well |
Emacs 24.1 | macport gdb (7.3) with certificated | not well |
Emacs 24.1 | original gdb (7.4) with certificated | good |
cgdb | apple gdb (6.3) | good |
"there's more to life than this !"
発端
Emacs 24.1からM-x gdbすると、gdb -i=mi a.outってでて、そのあとうまく動かなくなってた。
どうやら、Emacs 24.1からは デバッガとの通信が MI になるそうで、apple gdb(6.3)が対応していないみたいなんですね。
それで、gdbをターミナル.appから使ってるのもどうかなと思ったので、better halfならぬ、better debuggerを捜しにいきました。
gdbの最新安定版
名前 | version | パス |
gdb | 7.4.1 | /usr/local/bin/gdb |
ダウンロード
インストール
解凍してそのまま、configure , make , sudo make installでいけるとかいてあったけど、それ無理だった。
make で version.hが見つからないと言われた。
ので、みてみるとincludeの場所がおかしいようだったので、修正。
cd gdb/python
vi gdb/python/python.c
diff -u python.c~ python.c +++ python.c 2012-07-01 12:32:06.000000000 +0900 --- python.c~ 2012-01-15 03:04:05.000000000 +0900 @@ -65,7 +65,7 @@ #include "python-internal.h" #include "linespec.h" #include "source.h" -#include "version.h" +#include "../version.h" #include "target.h" #include "gdbthread.h" #include "observer.h"
それから make, make installで OK
承認
Key Chainの証明書発行と承認はこちらを見てやりました。
Emacsでの使用感
いいかんじだよ。
To Anonymousさんへ、
PATHの方ですね。たぶん、これをEmacsの設定ファイル(init.el or .emacs) に加えるといいと思います。直にgdbを指定できるかもしれませんが、これがお手軽だったので。
他の設定に影響しないように最後の方に加えてみてください。
;;;; Gdb ;;; /usr/local/bin/gdbを優先するために、実行パスの先頭に追加 (add-to-list 'exec-path "/usr/local/bin") (setq gdb-many-windows t) ;;; 変数の上にマウスカーソルを置くと値を表示 (add-hook 'gdb-mode-hook '(lambda () (gud-tooltip-mode t))) ;;; I/O バッファを表示 (setq gdb-use-separate-io-buffer t) ;;; t にすると mini buffer に値が表示される (setq gud-tooltip-echo-area nil)