.gdbinit を公開してみる

タイトルのまま。

自分はずっと Windows で開発してきたので、C++Visual Studio(VS) でやっていた。
VS のいいところは、デバッグ機能。
条件付きブレークポイントやメモリ変更時のブレークといったことをしても爆速で動いてくれてきちんと止まってくれる。
この良さは使ったことがある人ならわかるはず。
修士の時に開発した Variable-Order Linear-Chain CRFs も、VS なしには開発は無理だったはず。

さて、今の会社に入ってからは開発は Linux 一色のため、しょうがなく Emacs+gdb に移行した。
VS に比べると、まさに石器時代といった趣き。
まあ、郷に入れば郷に従えということで。
それで、少しでも快適に使えるようにキーバインドをいじってみた。
以下がその結果の .gdbinit.

define a
  up
end

define m
  down
end

define o
  bt $arg0
end

define rs
  kill
  run
end

define st
  b _start
  run
end

define go
  tbreak $arg0
  c
end

define v
  display $arg0
end

define w
  info breakpoints
end

define id
  info display
end

define dd
  delete display $arg0
end

define eb
  enable breakpoint $arg0
end

define db
  disable breakpoint $arg0
end

define y
  fin
end

define z
  fin
  s
end

一番気に入ってるのは z。
C++ のデバッガを使っていると、コンストラクタとかオペレーター(vector の [] とか)に入ってしまって鬱陶しい思いをすることがよくある。そういう時、z キーひとつでリターン→ステップ実行できるので、目的の関数に入るまで繰り返せばいい。
st は、プログラムを実行しないとブレークポイントが設置できない時のため。
rs は、ワンキーでリスタートするため。
go は、「指定行まで実行」。
また、a/m でスタックフレームを移動できる。これは当然 1キーでできないといけない。

ノートに使用済みコマンドを書き出して割り当てキーを考えた。
もっといい割り当てがあったら教えて下さい。