2009/05/05
Emacs + GDB チートシート
Emacs + GDB を利用したいならば、何よりも GNU Emacs Manual: Debuggers(英語) を読むことを強くおすすめします。
和訳も存在しますが内容が古く、マウスを利用した操作やグラフィカルな機能についての記述がありませんでした。
マニュアルを読んで理解したあとは実践で覚えていくわけですが、以下にまとめたチートシートを利用すれば時間が節約できるかもしれません。
もしも便利な機能に関して漏れがあれば是非教えてください。
.emacs
;;; GDB 関連 ;;; 有用なバッファを開くモード (setq gdb-many-windows t) ;;; 変数の上にマウスカーソルを置くと値を表示 (add-hook 'gdb-mode-hook '(lambda () (gud-tooltip-mode t))) ;;; I/O バッファを表示 (setq gdb-use-separate-io-buffer t) ;;; t にすると mini buffer に値が表示される (setq gud-tooltip-echo-area nil)
起動・終了
| 起動 | M-x gdb, dbx, xdb, sdb, pdb |
|---|---|
| デバッグ終了 | gdb バッファを kill (C-x k) |
ブレークポイント関連
| セットする | c-x space |
|---|---|
| 現在のソース行に一時的なブレークポイントを設定 | C-x C-a C-t |
| 一時的に diable/enable | ブレークポイントバッファの該当箇所で space でトグル |
| 削除 | 該当行で C-x C-a C-d |
| 削除 | ブレークポイントバッファの該当箇所で D(大文字) |
| セット・削除 | 該当赤丸をマウスでクリック |
| disable・enable | 該当行赤丸をマウスで Ctrl + クリック |
| 変数の変化を見るために常に表示 | C-x C-a C-w |
実行
| Step 一行進む。関数なら入って止まる | C-x C-a C-s |
|---|---|
| Next 一行進む。 | C-x C-a C-n |
| 機械語1つ実行 Instruction? | C-x C-a C-i |
| ブレークポイントに出会うまで実行 | C-x C-a C-r |
| 現在のカーソル行まで実行 | C-x C-a C-u |
| 現在のスタックフレームを出るまで | C-x C-a C-f |
| いきなり現在のカーソル行に実行位置 jump | C-x C-a C-j |
| 現在の位置を表す▲をドラッグ | そこまで実行 |
スタックフレーム
| 1つ外側のスタックフレームを選択する | C-x C-a < |
|---|---|
| 1つ内側のスタックフレームを選択する | C-x C-a > |
バッファ操作関連
| 参照した最後(Last)のバッファを開く | C-x C-a C-l |
|---|---|
| 各種バッファを閉じる | q |
| ブレークポイントバッファで RET | 該当のブレークポイントのソース開く |
| レジスタの値を見る | gdb-display-registers-buffer |
| レジスタの値を書き換える | レジスタバッファで RET |
| アセンブラバッファを開く | gdb-display-assembler-buffer |
| メモリバッファを開く | gdb-display-memory-buffer |
変数
| 変数の値を書き換える | ローカル変数バッファで RET |
|---|---|
| struct/union/array の値を見る | ローカル変数バッファで RET |
| 変数の値を評価する | C-x C-a C-p |
背景
しばらく QEMU をデバッガで動かしつつ動作を確認する作業が続きそうなので Emacs + GDB をきちんとマスターすることにしました。
いろいろ調べて分かったのですが、簡単な使い方をまとめているブログは見つかりますが、冒頭に書いた通り Emacs のマニュアルを読むのが一番良さそうです。
独り言
ひょっとしたらここに書いた内容は、Debug Hacksに書いてあるかもしれません。献本いただいたのですがまだ読めていなくてごめんなさい。
あと GDB で変数が <optimized out> で見られない場合があるのですが
以外に良い方法無いでしょうか。前者はがんばればできるけど若干つらい、後者は時間や手間がかかるのだよなあ。
Emacs + GDB の Tips もどこかに集積したいな。
みたいな逆引きで。
スクリーンショット
バンダイ
クリック: 2回
クリック: 2回
トラックバック - http://d.hatena.ne.jp/higepon/20090505/p1
リンク元
- 80 http://reader.livedoor.com/reader/
- 63 http://b.hatena.ne.jp/hotentry/it
- 57 http://d.hatena.ne.jp/
- 45 http://b.hatena.ne.jp/hotentry
- 40 http://www.google.com/reader/view/
- 24 http://b.hatena.ne.jp/entrylist
- 24 http://www14.cds.ne.jp/~not/antenna/
- 17 http://www.google.co.jp/reader/view/
- 15 http://www.monaos.org/
- 13 http://b.hatena.ne.jp/entrylist/it
Profile
Mona OS - Free operating system
Contact
Search
Books
Articles
- 過去のおすすめ本一覧
- ハッカー養成塾:ハッカーへの遠回り
- 関数型言語の勉強の連載
- 一人読書会
- Ubuntu 7.10 Gutsy インストール
- Ubuntu 7.10 Gutsyへアップグレード
- Ubuntu 6.06 LTSインストール
- Ubuntu 6.10 Edgy インストール
- 計算機プログラムの構造と解釈
- Modern C++ Design読書会
- はてな退職のお知らせ
- プログラマとして最低限身につけるべき知識
Reading Gauche
Books
Swimming(m)
PV
23360553



