vim使い向けのGDBフロントエンド、CGDBが便利という話

最近PHPの中身を探ることが多くなってきました。以前PHPカンファレンス2011で話した「PHPをハックしてオレオレ文法を追加する」のなかでは、PHPの内部の動きを知るにはソースコードリーティングだけだと実際にどんな動きをしているのかわかりづらいので、そういう時はGDB使ってやるといいよ、というふうなことを言いました。とかいいつつ、実際にはGDBを直接使ってはいません。操作がプリミティブ過ぎて使いづらいからです。代わりに、GDBフロントエンドの一つであるCGDBというソフトウェアを利用しています。

この記事ではこのCGDBの概要について簡単に説明します。

CGDBの何が便利なのか

GDBフロントエンドには、DDDInsightなどがあります。また、純粋なGDBフロントエンドの他にも、Eclipse CDTXcodeなど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使いの方は是非使ってみることをお勧めします。

まとめ

というわけで簡単にCGDBを紹介しました。CGDBに限らず、GDBを直接使う代わりにGDBフロントエンドを利用することでデバッグ作業が格段に楽になるので是非何か試してみると良いと思います、まる。