C言語のprintfデバッグから卒業しようと思い、本格的にデバッグツールの使い方を勉強し始めました。デバッグツールと言えばGDBが代表的ですが、GDBそのままではソース中の実行箇所がわかりにくく、なんか使いにくい…。
ということで、何か良いフロントエンドはないものかと探してみたところ、「CGDB」なるフロントエンドを見つけたので使ってみることにしました。
CGDBをインストール
CGDBのインストール自体は、yumとかapt-getなどのパッケージ管理ツールを使えば簡単です。CentOSの場合、yumを使って以下のコマンドでインストールできます。
使ってみる
起動する
CGDBを使ってデバッグするときには、cgdbの引数として実行ファイルを指定します。もちろん、実行ファイルには「-g」を付けてデバッグ情報を埋め込んでおきましょう。
起動すると以下のように、上半分にソースコード、下半分にGDBのコマンド入力画面が表示されます。以降、上下の画面を行ったり来たりしながらデバッグ作業を進めていきます。
vimライクな操作が快適
CGDBの便利なところは、ソースコードを見ながらvimライクなコマンド体系でデバッグができる点です。例えば、上下の画面の移動は「ESC」と「i」、vimでいうところの入力モード切替と同じ操作で可能です。
ソースコード画面では「カーソル移動」や「文字列の検索」など、vimと同じコマンドを使ってソースを探索できます。また、スペースキーを押すと、カーソル位置でブレークポイントをON/OFFしてくれるので、GDBのコマンドよりもサクサクと設定できて便利です。
ブレークポイントの設定ができたら、GDBコマンドの画面に戻って「run」を叩けばプログラムが実行されます。ブレークポイントにかかったときはソースコード画面でもその箇所を表示してくれるので、どの箇所が実行されているのか視覚的に把握できるのでデバッグも捗ります。
もちろん、GDBのコマンドもそのまま使えるので、変数の表示やセットも可能です。
まとめ
GDBのフロントエンドとしては「DDD」なども有名ですが、あちらはGUI環境が前提となっているので、CUI派の私としてはちょっと不満がありました。
その点、CGDBはCUI環境でも問題なく動作しますし、何よりvimライクな操作ができることが便利でした。GDBのために思わずemacsに乗り換えようとするところでしたが、まだまだvimユーザーとしてやっていけそうです笑。
あとはちゃんとGDBのコマンド覚えなきゃですが、それについては近いうちにWikiにまとめようと思います。
ではではノシ