Next: Up: Previous:

4.3 実装上の方針

ABCL/f システムでは,その移植性を保つためにも, ABCL/f コードを C++ コードに変換することで実現されている. デバッガシステムの実装にあたっても,この移植性を保つため, 既存の C/C++ プログラムのデバッガである gdb を用いた実装を行っている. この際, C/C++ コンパイラや gdb に対して ABCL/f 対応の内部拡張を行うのではなく, コンパイラやgdb には逐次 C/C++ プログラムへの対応のみを想定している. 一方,C/C++ コードと ABCL/f コードの差を吸収するためには, 我々のシステムがコンパイル以前の C/C++ コードに対して 適切なライン情報を付加したり, コンパイラ出力などに対してコード変換を加える事で, デバッガの実現をおこなう. これは, 我々が対象としている環境,特に並列・分散計算機環境においては, 種々の計算機環境のために内部拡張されたコンパイラ・デバッガを 持つ事も多く, このため,移植性を保つ為には計算機環境ごとに異なるかも知れない C/C++ コンパイラ・デバッガに手をいれるのを避けなければいけないからである. 例えば,我々の実装対象としている分散メモリ並列計算機AP1000,ap1000+では, コンパイラは通常のC/C++ プログラムに一部改変が加えられている. デバッガに関しては,各ノード上にgdb を立ち上げる事ができるが, 実際にはユーザはホストマシンから gdb を扱うため,そのために拡張された 環境が提供されている.

ユーザインターフェイスについても, 各計算環境におけるデバッガの扱われ方が わからないため, (1) コマンドライン上からも,(2) Emacs インターフェイスを通しても gdbを用いる事が出来ることにしておき, (1) コマンドライン上からしかgdbを扱えない場合でも, デバッガとして使用に耐える物であり, (2) Emacs インターフェイス を通して使う場合は,コマンドライン上では 吸収できなかった ABCL/f と C++ の差をEmacs lisp プログラムを用いて 吸収するようにしている.

この様な実装方針に基づいたシステムの実現を行う為には, 以下の様な点について考える必要がある.

  1. デバッガに必要な各種のシンボル情報の扱い方
  2. ABCL/f 上のシンボル情報の C++ コードへの埋め込み, ならびに,コンパイラ出力上でのシンボル情報の補正
  3. ユーザインターフェイスレベルにおける ABCL/f に即した環境の提供
それぞれ, 4.4節, 4.5節, 4.6節で説明を行う.



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