為せばNaruto
2006-10-22 gdbの見える化 [長年日記]
_ 必要なもの
_ Emacs 22 のインストール方法
CVS レポジトリからソースを取得して、コンパイルを行う。% setenv CVS_RSH ssh (又は export CVS_RSH=ssh) % cvs -d:pserver:[email protected]:/sources/emacs login % cvs -d:pserver:[email protected]:/sources/emacs co emacs % cd emacs % ./configure % gmake bootstrap % sudo gmake install
_ 設定
~/.emacs に以下の文を追加してください。
(setq gdb-many-windows t) (setq gdb-use-separate-io-buffer t) ; "IO buffer" が必要ない場合は nil で
_ gdbの見える化?!
~/.emacs 編集後、emacs を起動して M-x gdb を入力してください。
M-x gdb 入力後、 ミニバッファにデバッグを行うプログラム名を入力してください。
Run gdb (like this): gdb -annotate=3 プログラム名gdb モードが起動すると以下のように6つのバッファが表示されます。
+----------------------------------------------------------------------+ | GDB Toolbar | +-----------------------------------+----------------------------------+ | GUD buffer (I/O of GDB) | Locals buffer | | | | | | | | | | +-----------------------------------+----------------------------------+ | Source buffer | I/O buffer (of debugged program) | | | (comint-mode) | | | | | | | | | | | | | | | | | | | +-----------------------------------+----------------------------------+ | Stack buffer | Breakpoints buffer | | RET gdb-frames-select | SPC gdb-toggle-breakpoint | | | RET gdb-goto-breakpoint | | | D gdb-delete-breakpoint | +-----------------------------------+----------------------------------+各バッファは以下のような意味を持っています。
- GDB Toolbar - GDB を操作するためのツールバー
- GUD buffer - 操作を行うバッファ
- Locals buffer - ローカル変数名と値を表示するバッファ
- Source buffer - ソースを表示するバッファ
- IO/ buffer - プログラムの入出力を表示するバッファ
- Stack buffer - 実行を停止したときの呼び出し関係を表示するバッファ
- Breakpoints buffer - ブレークポイントを表示するバッファ
_ バッファが崩れたときは、M-x gdb-restore-windows で元に戻る。
_ 利点
gdb を GUI ライクに使える。- gdb の使いかたがわからなくてもなんとかなっちゃう。
- 変数やスタック、ブレークポイントが瞬時に見れる(見える化!)
_ バグ?
no window mode(emacs -nw) で起動するとうまくいかない。
_ おまけ TIPS
windmove-default-keybindgs の設定を .emacs に追加して、Shift+カーソルキーでウィンドウ間を移動できるようにするとなかなか便利に使用できます。
- はてなダイアリー[niitsuma] ×2186 : 1342, 406, 375, 19, 14, 11, 5, 4, 3, 2, 2, 1, 1, 1
- はてなダイアリー[cou929_la] ×24 : 21, 1, 1, 1
- はてなダイアリー[Rocco] ×22 : 12, 5, 3, 1, 1
- はてなダイアリー[odz] ×13 : 5, 2, 1, 1, 1, 1, 1, 1
- はてなダイアリー[zin130] ×12 : 4, 4, 3, 1
- はてなダイアリー[syou6162] ×9
- はてなダイアリー[hello_lv1] ×1
- http://reader.livedoor.com/rea... ×7
- http://b.hatena.ne.jp/entry/na... ×5
- http://del.icio.us/mattarijins... ×2
- http://del.icio.us/popular/gdb... ×2
- http://del.icio.us/jjzak ×2
- http://clip.livedoor.com/clip/... ×2
- http://del.icio.us/recent ×1
- http://www.opensiteexplorer.or... ×1
- http://www.x4d.de/backlinkchec... ×1
- http://del.icio.us/pulscope?ur... ×1
- http://del.icio.us/oda?url=htt... ×1
- http://del.icio.us/kazumi007 ×1
- http://del.icio.us/itawasa?url... ×1
- http://b.hatena.ne.jp/entrylis... ×1
- http://b.hatena.ne.jp/entry/ht... ×1
- http://b.hatena.ne.jp/entry/30... ×1
- はてなアンテナ[Saider] ×1
- https://www.google.co.jp/ ×340
- https://www.google.com/ ×222
- http://www.aise.ics.saitama-u.... ×83
- http://faves.com/users/ketchup... ×12
- http://faves.com/users/ketchup... ×9
- http://faves.com/users/ketchup... ×8
- http://swik.net/gdb Tips ×6
- https://www.bing.com/ ×5
- http://www.google.co.jp/ ×5
- http://www.aise.ics.saitama-u.... ×5
- http://please-sleep.cou929.nu/... ×5
- http://faves.com/users/ketchup... ×5
- http://twitter.com/syou6162 ×4
- http://twitter.com/home ×4
- http://faves.com/url/175830537... ×4
- http://www.google.co.jp/reader... ×3
- http://faves.com/users/ketchup... ×3
- http://faves.com/users/ketchup... ×3
- http://b.hatena.ne.jp/kabus/gd... ×3
- http://b.hatena.ne.jp/jjzak/gd... ×3
- http://b.hatena.ne.jp/add?mode... ×3
- https://www.google.fr/ ×2
- http://www.ist.aichi-pu.ac.jp/... ×2
- http://www.instapaper.com/arch... ×2
- http://www.google.com/webhp?hl... ×2
- http://www.google.com/imgres?u... ×2
- http://www.aichi-pu.ac.jp/ist/... ×2
- http://t.co/TtsIm6ay ×2
- http://swik.net/gdb Emacs?page... ×2
- http://swik.net/gdb Emacs ×2
- http://swik.net/gdb Developmen... ×2
- http://sagaweb.csse.muroran-it... ×2
- http://faves.com/users/ketchup... ×2
- http://faves.com/users/ketchup... ×2
- http://b.hatena.ne.jp/t/gdb?so... ×2
- http://b.hatena.ne.jp/smly/gdb... ×2
- http://b.hatena.ne.jp/siscosis... ×2
- http://b.hatena.ne.jp/satzz/gd... ×2
- http://b.hatena.ne.jp/odz/debu... ×2
- http://b.hatena.ne.jp/add?mode... ×2
- http://b.hatena.ne.jp/Yusuke_Y... ×2
- http://b.hatena.ne.jp/Yusuke_Y... ×2
- http://reader.livedoor.com/sub... ×1
- https://www.google.com.au/ ×1
- https://narupon.tdiary.net/200... ×1
- https://b.hatena.ne.jp/taraijp... ×1
- http://www.saiyasuweb.com/item... ×1
- http://www.saiyasuweb.com/item... ×1
- http://www.megite.com/url/:jro... ×1
- http://www.megite.com/url/:suz... ×1
- http://www.megite.com/url/:kaz... ×1
- http://www.ist.aichi-pu.ac.jp/... ×1
- http://www.ist.aichi-pu.ac.jp/... ×1
- http://www.instapaper.com/u ×1
- http://www.google.de/imgres?st... ×1
- http://www.google.com/notebook... ×1
- http://www.google.com/notebook... ×1
- http://www.google.com/bookmark... ×1
- http://www.google.co.jp/webhp?... ×1
- http://www.delicious.com/tag/e... ×1
- http://wp1.epkowa.co.jp:8080/A... ×1
- http://twitter.com/teu_1 ×1
- http://twitter.com/home?page=2... ×1
- http://tnaruto.blogspot.com/ ×1
- http://take-pc/~take/hf823062/... ×1
- http://swik.net/gdb?page=2 ×1
- http://swik.net/gdb debug ×1
- http://swik.net/gdb Programmin... ×1
- http://swik.net/gdb ×1
- http://swik.net/debug Tips ×1
- http://swik.net/Emacs debug ×1
- http://shino.tumblr.com/post/2... ×1
- http://sagaweb.csse.muroran-it... ×1
- http://retext.orig.jp/text/240... ×1
- http://readitlaterlist.com/unr... ×1
- https://www.google.de/ ×1
- http://r.duckduckgo.com/l/?kh=... ×1
- http://mobile.excite.co.jp/sea... ×1
- http://krasnoludki.hekko.pl/po... ×1
- http://jp.f31.mail.yahoo.co.jp... ×1
- http://jp.f31.mail.yahoo.co.jp... ×1
- http://hootsuite.com/dashboard... ×1
- http://faves.com/users/ketchup... ×1
- http://faves.com/users/ketchup... ×1
- http://faves.com/users/ketchup... ×1
- http://faves.com/users/ketchup... ×1
- http://faves.com/users/ketchup... ×1
- http://faves.com/search?st=gdb... ×1
- http://fastladder.com/reader/ ×1
- http://domain.chura2.com/d=tdi... ×1
- http://clip.livedoor.com/clips... ×1
- http://ceron.jp/url/narupon.td... ×1
- http://bon.sagool.jp/hub/http:... ×1
- http://b.hatena.ne.jp/xyasai/ ×1
- http://b.hatena.ne.jp/tor_ozak... ×1
- http://b.hatena.ne.jp/tor_ozak... ×1
- http://b.hatena.ne.jp/tor_ozak... ×1
- http://b.hatena.ne.jp/taraijpn... ×1
- http://b.hatena.ne.jp/t?tag=gd... ×1
- http://b.hatena.ne.jp/t/gdb?of... ×1
- 為せばNaruto ×83 : .comのGoogle検索 ×42, .co.jpのGoogle検索 ×9, .comのGoogle検索 ×8, .co.jpのGoogle検索 ×8, .co.jpのGoogle検索 ×7, .comのGoogle検索 ×3, .comのGoogle検索 ×3, .comのGoogle検索 ×2, .co.jpのGoogle検索 ×1
- emacs gdb ×31 : .comのGoogle検索 ×3, .co.jpのGoogle検索 ×3, .co.jpのYahoo!検索 ×3, .co.jpのYahoo!検索 ×3, .comのGoogleイメージ検索 ×3, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのYahoo!検索 ×2, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- gdb emacs ×22 : .comのGoogleイメージ検索 ×7, .comのGoogleイメージ検索 ×4, .co.jpのGoogle検索 ×3, .comのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .comのGoogle検索 ×1, .comのGoogle検索 ×1
- 為せばnaruto ×18 : .comのGoogle検索 ×5, .co.jpのGoogle検索 ×4, .co.jpのGoogle検索 ×3, .co.jpのGoogle検索 ×2, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- gdb-many-windows ×13 : .co.nzのGoogleイメージ検索 ×3, .co.nzのGoogle検索 ×2, .co.jpのYahoo!検索 ×2, .comのGoogle検索 ×1, .co.nzのGoogle検索 ×1, .co.nzのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- gdb annotate ×11 : .comのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .comのGoogle検索 ×1
- gdb gui ×9 : .comのGoogle検索 ×2, .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- Emacs ×8 : .co.jpのGoogleイメージ検索 ×4, .co.jpのGoogleイメージ検索 ×2, .co.jpのGoogleイメージ検索 ×2
- emacs ×5 : .co.jpのGoogleイメージ検索 ×3, .co.jpのGoogleイメージ検索 ×2
- gdb windows ×4 : .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- M-x gdb ×4 : .co.jpのGoogle検索 ×2, .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- gdb gui windows ×4 : .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- 為せばnarupon ×3 : .co.jpのGoogle検索 ×2, .comのGoogle検索 ×1
- emacs gdb 22 ×3 : .co.jpのGoogle検索
- gdb 使いかた ×3 : .co.jpのGoogle検索
- gdb emacs 起動 ×3 : .co.jpのGoogle検索 ×2, .co.jpのGoogle検索 ×1
- Emacs 22 ×3 : .co.jpのGoogle検索
- gdb GUI ×2 : .co.jpのGoogle検索
- gdb の使いかた ×2 : .co.jpのGoogle検索
- emacs gdb 見える化 ×2 : .co.jpのGoogle検索
- gdb-many-windows Source buffer ×2 : .co.jpのGoogle検索
- window use gdb ×2 : .co.jpのGoogle検索
- gdb emacs M-x ×2 : .co.jpのGoogle検索
- emacs gdb M-x ×2 : .co.jpのGoogle検索
- gdb emacs22 ×2 : .comのGoogle検索
- emacs gdb バッファ ×2 : .comのGoogle検索
- gdb ×2 : .co.jpのGoogle検索
- ddd EMACS ×2 : .co.jpのGoogle検索
- 見える化 利点 ×2 : .co.jpのGoogle検索
- emacs gud ×2 : .roのGoogleイメージ検索
- emacs22 ×2 : .comのGoogleイメージ検索
- Emacs-gdb GUI ×2 : .comのGoogleイメージ検索
- emacs breakpoint ×2 : .co.jpのGoogleイメージ検索
- meadow C言語 compile M-x ×2 : Google検索(d.hatena.ne.jp/niitsuma/20080114のキャッシュ)
- windows gdb ×2 : .co.jpのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- emacs gdb gui ×2 : .comのGoogle検索
- emacs22 gdb ×2 : .comのGoogle検索 ×1, .co.jpのGoogle検索 ×1
- emacs M-x gdb ×2 : .comのGoogle検索 ×1, .comのGoogle検索 ×1
- gdb GUI ×2 : .comのGoogle検索 ×1, .comのGoogle検索 ×1
- GDB GUI ×2 : .comのGoogle検索 ×1, .comのGoogle検索 ×1
- emacs gdb モード ×1 : .comのGoogle検索
- emacs22 バグ ×1 : .comのGoogle検索
- emacs gdb ソース buffer ×1 : .comのGoogle検索
- emacs gdb ソース バッファ ×1 : .comのGoogle検索
- emacs GDB ×1 : .comのGoogle検索
- emacs 22 source ×1 : .comのGoogle検索
- gdb emacs 見える ×1 : .comのGoogle検索
- Emacs 22 GDB GUI ×1 : .comのGoogle検索
- gdb GUI windows ×1 : .comのGoogle検索
- 元ネタはNARUTO ×1 : .comのGoogle検索
- "M-x gdb" ×1 : .comのGoogle検索
- gud gdb ×1 : .comのGoogle検索
- gdb toolbar ×1 : .comのGoogle検索
- pserver:[email protected]:/sources/emacs login ×1 : .comのGoogle検索
- gdbをcvs ×1 : .comのGoogle検索
- 無毛宣言 ×1 : .comのGoogle検索
- emacs gdb 設定 ×1 : .comのGoogle検索
- annotate gdb ×1 : .comのGoogle検索
- gdb "--annotate=3" ×1 : .comのGoogle検索
- Emacs M-x gdb ×1 : .comのGoogle検索
- gdbの見える化 ×1 : .comのGoogle検索
- gdb .emacs ×1 : .comのGoogle検索
- gud gdb elscreen ×1 : .comのGoogle検索
- gdb-frames-select ×1 : .comのGoogle検索
- naruto buffering ×1 : .itのGoogle検索
- gdb breakpoint ×1 : .comのGoogle検索
- Emacs 22 GDB ×1 : .comのGoogle検索
- gdb emacs breakpoint ×1 : .comのGoogle検索
- gdb emacs 22 ×1 : .comのGoogle検索
- gdb 入力 ×1 : .comのGoogle検索
- gud ブレークポイント 表示 ×1 : .comのGoogle検索
- emacs �\�� �ݒ� gdb ×1 : .comのGoogle検索
- emacs 22 gdb 設定 ×1 : .comのGoogle検索
- naruto 為せば ×1 : .comのGoogle検索
- gdb emacs22 .emacs ×1 : .comのGoogle検索
- emacs22 cvs ×1 : .comのGoogle検索
- emacs M-x gdb 起動 ×1 : .comのGoogle検索
- Emacs GDB 見える化 ×1 : .comのGoogle検索
- http://narupon.tdiary.net/20061022.html ×1 : .comのGoogle検索
- emacs GDB 起動 ×1 : .comのGoogle検索
- gud emacs 22 ×1 : .comのGoogle検索
- emacs "M-x gdb" ×1 : .co.jpのGoogle検索
- netbsd emacs gdb ×1 : .co.jpのGoogle検索
- emacs setq gdb ×1 : .co.jpのGoogle検索
- Run gdb (like this) .emacs setq ×1 : .co.jpのGoogle検索
- emacs gdb "gdb-many-windows" ×1 : .co.jpのGoogle検索
- windmove-default-keybindgs gdb ×1 : .co.jpのGoogle検索
- emacs22 インストール方法 ×1 : .co.jpのGoogle検索
- GDB ×1 : .comのGoogle検索
- m-x gdb ×1 : .co.jpのGoogle検索
- io buffer ×1 : .co.jpのGoogle検索
- gdb windows gui ×1 : .co.jpのGoogle検索
- gdb windowsからデバッグ ×1 : .co.jpのGoogle検索
- gdb window ×1 : .co.jpのGoogle検索
- gdb setenv ×1 : .co.jpのGoogle検索
- gdb many windows ×1 : .co.jpのGoogle検索
- gdb locals ×1 : .co.jpのGoogle検索
- gdb io ×1 : .co.jpのGoogle検索
- gdb emacs Run gdb (like this) ×1 : .co.jpのGoogle検索
- gdb emacs 出力 ×1 : .co.jpのGoogle検索
これ、凄い便利です。
便利すぎて笑ってしまった。(w
さいとーさんに補足されてしまった。(笑
動作はもっさりしていますが、emacs の中で DDD のようなグラフィカルな環境でデバッグできるって言うのは利点ですよね。
riece と同じように、この gdb モードもバッファが複数あって管理が面倒なので、
elscreen と一緒に使うとさらに便利になると思います。
s/補足/捕捉/
部首が違うだけでずいぶん意味が違うんだなぁ…。