From: matz@... (Yukihiro Matsumoto) Date: 1997-08-15T10:27:09+09:00 Subject: [ruby-dev:129] Re: tracer まつもと ゆきひろです In message "[ruby-dev:127] tracer" on 97/08/14, Keiju ISHITSUKA writes: |けいじゅ@いそうろう.日本ラショナルです. | |松本氏はメイルの届かないところにいってしまったので, 返事は来週になると |思いますが, 忘れないようにメイルします. いやあ,なんとか mail reachablity を確保しました. |スレッドのプログラムをデバックする時に結構苦労する(子スレッドのどこで |エラーが発生したのか分かりずらい)ので, 簡単なトレーサを作ってみました. あ,どうも. |# ほんとうは, スレッドのプログラムをもう少しデバッグしやすくして欲しい |# んですが... どういう風にして欲しいんでしょうか.具体的に提案して下さいま せ.でも,スレッドはすっごい複雑なので,提案を採用できるかど うかはわかりませんが. |で, 幾つか気がついたこと&質問があります. | |1. set_trace_funcで呼ばれるprocのthreadがおかしい | |ある行を実行する前にset_trace_funcで設定されたprocが呼ばれるのですが, |1つ前のthreadで呼ばれています. バグでしょうねえ.ちょっと見てみます. |2. イベントlineはなぜ全ての実行で発生しない? | |時々発生していないことがありますが, 何故でしょう?? どういうケースだかわかりますか.1行につき1回しか呼ばれないと いうのがありますが,それではなくて? もうちょっと条件がわかると問題が明らかになると思います. |3. IO.readlines()がprivate | |ruby-1.1a0での話しです. ??? うちとは違う1.1a0なんでしょうか? |4. 質問(1) | |set_trace_funcは, thread毎に設定できるのですか? 実際にスレッド毎に設定 |できたもので... できます.スレッドのコンテキスト情報のなかにtrace_funcは含ま れています. |5. 質問(2) | |ソースの最後の行を見て頂くと気づくと思うのですが, このファイル |(tracer.rb)はrequireしても, コマンドとしても実行でるようにしました. | |つまり, | |tracer.rb fooo.rb ... | |でも実行できますし, | |require "tracer.rb" |... |Tracer.on |... | |でも実行できます. | |それで質問というのは, | | tracer.rb fooo.rb | |と実行した時, 実際に実行するプログラム(fooo.rb)が | | fooo.rb | |で実行されているようにするには, どのような設定が必要なんでしょう? | |今は, ARGVと$0だけ再設定しているのですが... 実用上,これで問題ないと思います,多分. まつもと ゆきひろ /:|)