Hatena::ブログ(Diary)

C++でゲームプログラミング

2011-03-07

[][][]Pyclewn で、GDB ノススメ☆

vim で簡単に GDB を使いたいでゲソよ!!

と、いう訳で vim 上で、GDB を行うツール(プラグイン?)の Pyclewn を試してみました。

前身として、clewn というものもあるみたいですが、こちらは Windows では使えないみたいです。

Pyclewn と clewn の違いなんかは、ここら辺を見れば分かりやすいと思います。


☆導入

最新は、ver1.5 みたいですが、Windows だと ver 1.4 のインストーラしかないっぽい?

ここら辺からインストーラを落としてきます。

ただ、インストール後の Pyclewn のバージョンを見てみると 1.5 になっていたりするのでよく分かりません……。

インストール時に特に設定とかはいらなかったと思います。


インストール/実行環境

  • WindwosXP
  • gvim 7.3(kaoriya)
  • gcc 4.5.2
  • python 2.6
  • Pyclewn 1.5

☆Pyclewn でデバッグを行うまでの流れ

[main.cpp]

int
plus(int a, int b){
    return a + b;
}

int
main(){
    int sum = 0;
    for( int i = 0 ; i < 10 ; i++ ){
        sum += i;
    }
    int n = plus(10, 4);
    return 0;
}

1.実行バイナリの作成
:!g++ -g main.cpp -o test.exe
2.Pyclewn の起動
:Pyclewn
3.実行バイナリの設定
:Cfile test.exe
4.キーバインドの設定

デフォルトでは、キーバインドが無効になっているので有効にします。

:Cmapkeys
5.ブレークポイントの設定

<C-b> でカーソル行にブレークポイントが設定されます。

6.実行

<S-r> (:Crun)で、GDB を実行します。

あとは、ステップしたりトーレスしたり変数の中身をごにょごにょと。

動作方法は↓のキーバインドを参考にしてください。


キーバインド

デバッグ中の基本的な操作方法です。

下記のコマンドで、Pyclewn のキーバインドを有効にしておく必要があります。

:Cmapkeys

msvc のキーバインドを比較するとこんな感じです。

Pyclewnmsvc備考
実行<S-r>F5 
ブレークポイントのON/OFF<C-b>/<C-e>F9/F9 
ステップオーバー<C-n>F10処理の中に侵入しないで1行ずつステップ
ステップイン<S-s>F11処理の中に侵入して、1行ずつステップ
ステップアウト<S-f>Shift+F11スコープから出る
続行<C-c>F5次のブレークポイントに飛ぶ
終了<S-q>Shift+F5Pyclewn は GDB が終了する

※S = Shift、C = Ctrl

詳しいキーバインドは :help で調べてみてください。

:help gdb-keys

☆変数の中身を出力

:Cdbgvar {変数名}

☆実際の動作

f:id:osyo-manga:20110307072658g:image


☆覚書


[参照]

http://blogs.yahoo.co.jp/m_okimotojp/51146346.html

http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/

http://d.hatena.ne.jp/parasporospa/20061215/p1

http://www.fireproject.jp/feature/gdb/

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証