Next: Up: Previous:

4.6.2 位置情報の指定/表示(Emacs版)

コマンドラインから gdbを用いる場合, 表示の関係上,行を実行単位として実行行う必要があるが, Emacs インターフェイスを用いてgdbを用いる場合, その必要はない. 現在の実行部分のソース上での表示やブレイクポイント設定等は, Emacs バッファ上で行う事が出来るからである.

現在の実装では,図4.7のように実行の遷移が示される. アンダーラインで示されるのが,現在実行されようとしている箇所であり, (make-tree (- n 1))のように表示されている場合は, make-treeの実行が終了した所である事を示している. また,ブレイクポイントの設定もABCL/f ソース上で場所を示す事で S式単位の設定が可能である.

このような表示を可能にするため, ライン情報の対応を保存したダミーファイルを用いている. gdb 側ではダミーファイルをソースとして指定し, Emacs インターフェイス 上でおこなわれた行番号指定やソース上での位置指定に関して, ダミーファイル上のライン情報に変換することで処理している.


(defun make-tree (n)
  (declare (fixnum n) (reply-type tree))
  (if (= n 0)
      (leaf 1)
      (node (make-tree (- n 1)) (make-tree (- n 1)))))
----- next 実行 ------
(defun make-tree (n)
  (declare (fixnum n) (reply-type tree))
  (if (= n 0)
      (leaf 1)
      (node (make-tree (- n 1)) (make-tree (- n 1)))))
----- next 実行 ------
(defun make-tree (n)
  (declare (fixnum n) (reply-type tree))
  (if (= n 0)
      (leaf 1)
      (node (make-tree (- n 1)) (make-tree (- n 1)))))


図4.7 Emacs インターフェイス 上での next 実行例



Mitsubishi Research Institute,Inc.
Mon Feb 24 19:27:22 JST 1997