新しいことはいいことだ?
ソフトウェアを書いていると、「これは作りがそもそも古いから、今風に書き直そう」という衝動に駆られることは誰しも在るだろう。そこをグッと我慢することが適切な場合もあるし、その勢いではじめたOSSプロジェクトがRuby on Railsのように大きく花開くこともある。はたまた、GNU Makeにしびれを切らした人々がCMakeやらOMakeやらSConsやらビルドシステムの乱立を招いてしまうということもある。そのままでうまく仕事ができるものは、わざわざ置き換えなくてもよいものというのは結構多いんじゃないかなぁ、というのが何となくの最近の感想である。
置き換えなくてもよかったのでは、と苦々しい思いで最近眺めているのが Emacs24 で新しくなった gdbモード。よく知らないけれど、gdbは在る一定の新しいバージョンから -i=mi
というオプションをつけて起動するとIDE等のバックエンド用モードとして動作する機能を有しており、ヒューマンリーダブルではないがIDE開発者からはよりgdbをコントロールしやすいインターフェースを提供するためのもののようである。そして、それをEmacsから使うためにEmacsWiki: GDB-MI なるものがGoogle Summer of Code 2009のプロジェクトとして採択されて開発が始まり、現在のEmacs24系のデフォルトになっているらしい。
これが、自分の環境(Debian squeezeのデフォルトで入るEmacs24.3とgdb 7.4)だとまともに動作してくれない。EmacsでM-x gdb
で立ち上げると、一見ちゃんと動いているように見えるが、attach <PID>
のようにプロセスにアタッチすると (gdb)
というプロンプトがでなくなる。しかも、SIGTERMやSIGABRTを受け取っても、そのメッセージを陽に表示してくれない。
まだまだ開発途上なのかもしれないが、Emacs23系ではまともに動いていた機能が使えなくなるのは結構辛い。試しにEmacs開発レポジトリの先端をビルドして使ってみたが、さらに表示がひどく崩れる有り様だった。
結局のところ、M-x gdb
ではなく、M-x gud-gdb
を使うことで昔の通りのgdbモードが動作するので、困ってはいない。しかし、GDB/MIはもうちょっとまともに動くようになってからデフォルトに採用してくれないものだろうか。