YamaKen
yamak****@bp*****
2005年 2月 10日 (木) 09:38:41 JST
ヤマケンです。井上さん、こんにちは。 At Wed, 9 Feb 2005 06:23:19 -0800, jun.l****@gmail***** wrote: > ともあれ、 > ・ファイルと行指定で breakpoint > ・breakpoint 削除 > ・display とか小技 > など基本的な機能は実装しました。コードを探すときのアルゴリズムの都合で > デバッグ情報の行カウントが、オブジェクトが出現し終わった行を数えていた > のが、出現しはじめた行を数える方式になりました。つまり、例えば > 1: (define foo > 2: (bar (baz > 3: 0)) > というコードの (cdr foo) の行カウントは今までは 3 でしたが今回のパッチ > を適用すると 2 になります。あと #if が増えて見苦しくなってます(苦笑) どうもありがとうございます。今は結構原始的なデバッグを行ってるん でかなり楽になると思います。 リポジトリへの取り込みは、検証の時間が十分取れないのでひとまず見 送らせて頂きました。今日0.4.6 beta1、2/13に0.4.6正式版が予定され ているので、その後になると思います。 検証の方ですが、特にslib.cのlreadr()で関数ブロックローカルに returnをマクロとして再定義している部分がポータブルかどうか判断が 付いてません。 gccでは gcc -E -DDEBUG_SCM=1 uim-scm.c の出力で問題無い事を確認 してるんですが、ISO/IEC 9899-1999では以下のように定義されている ので他のコンパイラでは意図した通りに変換されないような気もします。 6.10.3.5 Scope of macro definitions 1 A macro definition lasts (independent of block structure) until a corresponding #undef directive is encountered or (if none is encountered) until the end of the preprocessing translation unit. Macro definitions have no significance after translation phase 4. この辺の知識をお持ちの方は教えて頂けると嬉しいです。自分でもちょっ と調べてみたんですが、すぐには調べがつきませんでした。 > 別の処理系に移植する方向で決まってるようで、どれほど役に立つのか甚だ > 不安ですが… 他の処理系に移るためにはまだまだ沢山の作業が必要なんで当分先にな ると思います。その間十分活用させて頂きます。 また、移行先の処理系に相当する仕組みが無い場合はこのコードをベー スに移植する事になると思います。 ------------------------------- ヤマケン yamak****@bp*****