vim使い向けのGDBフロントエンド、CGDBが便利という話
最近PHPの中身を探ることが多くなってきました。以前PHPカンファレンス2011で話した「PHPをハックしてオレオレ文法を追加する」のなかでは、PHPの内部の動きを知るにはソースコードリーティングだけだと実際にどんな動きをしているのかわかりづらいので、そういう時はGDB使ってやるといいよ、というふうなことを言いました。とかいいつつ、実際にはGDBを直接使ってはいません。操作がプリミティブ過ぎて使いづらいからです。代わりに、GDBフロントエンドの一つであるCGDBというソフトウェアを利用しています。
この記事ではこのCGDBの概要について簡単に説明します。
CGDBの何が便利なのか
GDBフロントエンドには、DDD、Insightなどがあります。また、純粋なGDBフロントエンドの他にも、Eclipse CDT、XcodeなどGDBフロントエンドとしての機能を有しているIDEなどがあります。これらのGDBフロントエンドが具体的には何をしてくれるのかというと、GUIでソースコードを見つつブレークポイントを設定しデバッグできるというような機能を持っています。また、自分が今どこのソースコードをデバッグしているかなどもわかりやすく表示してくれます。要するにCUI上でコマンドを叩く必要があるGDBよりもわかりやすいユーザーインターフェイスを提供しているわけです。
これらのGDBフロントエンドとCGDBとの違いは以下二点です。
CGDBはGDBと同じくCUIです。ssh経由でも簡単に利用できます。CGDBを起動すると、上半分にソースコード、下には通常のGDBが表示されます。CGDBにはvimと同様にモードの概念があり、起動した直後にはGDBを通常通り操作できるGDBモードとなっています。vimと同様にescape、もしくはCtrl+[をタイプするとCGDBモードとなり、vimキーバインドでソースコードを見つつブレークポイントを設定することができるようになります。
vimとほぼ同じキーバインドで操作できるCGDBは大変操作しやすく、vimと同様に設定ファイルを書くことでキーバインドのカスタマイズも効きます。GDBを素で利用するよりも何倍も幸福になれましたのでvim使いの方は是非使ってみることをお勧めします。