Next: Up: Previous:

4.6.4 フレーム情報(Emacs版)

gdb は,フレームを上下する度フレーム情報を表示し, また ``where'' コマンドなどでスタックの中身を表示させる事も出来る. この中には,当然 ランタイムライブラリに相当するフレーム に関する情報も含まれる. このため,Emacs版のデバッガでは,ランタイムライブラリに相当する フレームの情報の除去を行っている.

また,単にランタイムライブラリの中に突入し,そのまま復帰した場合, フレーム情報が表示されるのは妥当ではないため削除する必要がある. そのためには,ABCL/f に相当するフレームと ランタイムとの間の呼び出し関係がわかる必要がある. 図4.9の(A)の例の場合, スレッドの実行中ランタイムに突入しすぐ復帰しただけなので, フレーム情報の表示をしてはならないが, (B)の例の場合,これは,新たなスレッド実行であるため, フレーム情報を表示する必要がある.

我々の実装では,フレームの表示がある度にそのフレームポインタの 値を調べる事で,フレーム間の呼び出し関係を調べている. つまり,Emacs lisp プログラム 側で自動的に info register fp なるコマンドを発行,その値を調べ, 実際にフレームの表示を行うか決定している. 当然,Emacs lisp プログラム と gdb とのインタラクションは ユーザには表示されないようになっている.


図4.9 ABCL/fのフレーム表示



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