なひです。

> From: Yukihiro Matsumoto [mailto:matz / ruby-lang.org] 
> Sent: Monday, March 11, 2002 4:36 PM

> たぶんですね,だれもVMとデバッガの関係について具体的なモデル
> を(それどころか共通のイメージさえ)持ってないので,話を進めよ
> うにも言葉が通じないというのが現状ではないでしょうか。

はい。これまでの反省から、当面の間なひはなひの経験から
「こんなdebug APIが欲しいなぁ」要件を書こうと思います。
あるいはもう少しRWikiなどで煮詰めてからMLに持ってくるほうが
建設的かもはしれません。
RDEのsakazukiさんからもいい要件(?)が聞けそうな
気がしますが、忙しそうですね。

> で,「ステップ実行は欲しい」というニーズは理解しました。これ
> について一度も否定したつもりはなかったのですが,なひさんには
> そう聞こえたのかな。

「デバッグしてないときの効率を下げない」という命題に
反するかな、と思っていて、否定的なのかと思っていました。
「もしデバッグ中なら」という条件判断は、
現行rubyの「もしset_trace_funcしてたら」
と同じだけ効率を下げますよね。
が、すいません、この辺は、なひが全然わかってない上に、
実装の話なので、忘れてください。とりあえず「ステップ実行」
という要件です。スレッドと絡めてこれからもっと詳細化しないと
いけませんが。

	/	/	/

ブレークポイントの指定方法について。
現行はfilenameと(lineno|method_name)の組で指定させてますが、
VMのdebug APIが持つプリミティブのインタフェイスは
どうするのがいいでしょう。
Javaだとklassとメソッド名、その中の位置で、
SetBreakpoint(jclass clazz, jmethodID method, jlocation location)
になってますが、特異メソッドにbp打つにはklassじゃ困ります。
あと、evalの中身に打つことをもし許すなら、このときも困るかな。

Riteでは従来どおり、filenameと(lineno|method_name)の組か、
あるいはanObjectと(lineno|method_name)の組なんて考えも
ありますね。Javaみたいに、anObject,  method_name, pos
(メソッド定義先頭行からの相対位置)でも面白そう。
VMがクラスやソースコードをどう持つか(どう持たないか)に
依存しそうです。

いかんまた実装の話になりかけた。リクエストとしては、
「anObjectとmethod_name, posの組なんて面白そうだけど、
従来どおりfilenameと(lineno|method_name)の組でも問題ない」
です。