[#50] Re: [ruby-list:3596] Module#attr specification (Re: boolean values) — keiju@... (石塚圭樹 )

けいじゅ@日本ラショナルです.

11 messages 1997/08/05

[#121] Re: meta programming features — keiju@... (石塚圭樹 )

けいじゅ@日本ラショナルです.

18 messages 1997/08/13
[#122] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/08/13

まつもと ゆきひろです

[#126] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/08/14

けいじゅ@日本ラショナルです.

[#128] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#127] tracer — keiju@... (Keiju ISHITSUKA)

けいじゅ@いそうろう.日本ラショナルです.

36 messages 1997/08/14
[#129] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#131] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/15

けいじゅ@いそうろう.日本ラショナルです.

[#140] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/15

まつもと ゆきひろです

[#144] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/16

けいじゅ@日本ラショナルです.

[#150] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#155] Re: tracer — keiju@... (石塚圭樹 ) 1997/08/18

けいじゅ@日本ラショナルです.

[#156] Re: tracer — matz@... (Yukihiro Matsumoto) 1997/08/18

まつもと ゆきひろです

[#162] ruby -r module [Re: tracer] — keiju@... (石塚圭樹 ) 1997/08/19

[#164] Re: ruby -r module [Re: tracer] — WATANABE Hirofumi <watanabe@...> 1997/08/19

わたなべです.

[#185] Re: [ruby-list:3720] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 )

26 messages 1997/08/20
[#186] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

[#193] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

けいじゅ@日本ラショナルです.

[#194] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#195] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/20

けいじゅ@日本ラショナルです.

[#200] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/20

まつもと ゆきひろです

[#207] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#209] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#211] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#212] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#213] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#214] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#215] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

[#217] Re: Class#eval [Re: ftplib.rb revision 1.4] — matz@... (Yukihiro Matsumoto) 1997/08/22

まつもと ゆきひろです

[#218] Re: Class#eval [Re: ftplib.rb revision 1.4] — keiju@... (石塚圭樹 ) 1997/08/22

けいじゅ@日本ラショナルです.

[#257] [BUG] MLF — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルです.

24 messages 1997/08/26
[#259] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#261] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#262] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#263] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#264] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#267] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#268] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#269] Re: [BUG] MLF — matz@... (Yukihiro Matsumoto) 1997/08/26

まつもと ゆきひろです

[#270] Re: [BUG] MLF — keiju@... (石塚圭樹 ) 1997/08/26

けいじゅ@日本ラショナルです.

[#291] illegal here document — shugo@... (前田 修吾 / maeda shugo)

前田です。

15 messages 1997/08/27
[#293] Re: illegal here document — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#309] [BUG] method index — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

16 messages 1997/08/28
[#310] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#311] Re: [BUG] method index — keiju@... (石塚圭樹 ) 1997/08/28

けいじゅ@日本ラショナルソフトウェアです.

[#312] Re: [BUG] method index — matz@... (Yukihiro Matsumoto) 1997/08/28

まつもと ゆきひろです

[#316] [Q] [Re: [BUG] method index] — keiju@... (石塚圭樹 ) 1997/08/28

けいじゅ@日本ラショナルソフトウェアです.

[#320] Re: [Q] [Re: [BUG] method index] — matz@... (Yukihiro Matsumoto) 1997/08/29

まつもと ゆきひろです

[#324] virtual class [Re: [Q] [Re: [BUG] method index] ] — keiju@... (石塚圭樹 ) 1997/08/29

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:127] tracer

From: keiju@... (Keiju ISHITSUKA)
Date: 1997-08-14 08:20:30 UTC
List: ruby-dev #127
けいじゅ@いそうろう.日本ラショナルです.

松本氏はメイルの届かないところにいってしまったので, 返事は来週になると
思いますが, 忘れないようにメイルします.

スレッドのプログラムをデバックする時に結構苦労する(子スレッドのどこで
エラーが発生したのか分かりずらい)ので, 簡単なトレーサを作ってみました.

# ほんとうは, スレッドのプログラムをもう少しデバッグしやすくして欲しい
# んですが... 

で, 幾つか気がついたこと&質問があります.

1. set_trace_funcで呼ばれるprocのthreadがおかしい

ある行を実行する前にset_trace_funcで設定されたprocが呼ばれるのですが,
1つ前のthreadで呼ばれています.

2. イベントlineはなぜ全ての実行で発生しない?

時々発生していないことがありますが, 何故でしょう??

3. IO.readlines()がprivate

ruby-1.1a0での話しです.

4. 質問(1)

set_trace_funcは, thread毎に設定できるのですか? 実際にスレッド毎に設定
できたもので...

require "tracer.rb"

Thread.start do
  Tracer.on
  ...
end

上記のように, あるthreadでトレースをONにするとそのスレッドだけトレース
されます...

5. 質問(2)

ソースの最後の行を見て頂くと気づくと思うのですが, このファイル
(tracer.rb)はrequireしても, コマンドとしても実行でるようにしました.

つまり,

tracer.rb fooo.rb ...

でも実行できますし,

require "tracer.rb"
...
Tracer.on
...

でも実行できます. 

それで質問というのは,

  tracer.rb fooo.rb

と実行した時, 実際に実行するプログラム(fooo.rb)が

  fooo.rb

で実行されているようにするには, どのような設定が必要なんでしょう?

今は, ARGVと$0だけ再設定しているのですが...

-- ここからソース(tracer.rb)
class Tracer
  MY_FILE_NAME_PATTERN = /^tracer\.(rb)?/
  
  EVENT_SYMBOL = {
    "line" => "-",
    "call" => ">",
    "return" => "<",
    "class" => "C",
    "end" => "E"}
  
  def initialize
    $threads = Hash.new
    $sources = Hash.new
  end
  
  def on
    set_trace_func proc{|event, file, line, id, binding|
      trace_func event, file, line, id, binding
    }
    print "Trace on\n"
  end
  
  def off
    set_trace_func nil
    print "Trace off\n"
  end
  
  def get_thread_no
    unless no =  $threads[Thread.current.id]
      $threads[Thread.current.id] = no = $threads.size
    end
    no
  end
  
  def get_line(file, line)
    unless list = $sources[file]
      begin 
	f =open(file)
	$sources[file] = list = f.readlines
      ensure
	f.close
      end
    end
    list[line - 1]
  end
  
  def trace_func(event, file, line, id, binding)
    return if File.basename(file) =~ MY_FILE_NAME_PATTERN
    
    Thread.critical = TRUE
    printf("#%d:%s:%d:%s: %s",
	   get_thread_no,
	   file,
	   line,
	   EVENT_SYMBOL[event],
	   get_line(file, line))
    Thread.critical = FALSE
  end

  Single = new
  def Tracer.on
    Single.on
  end
  
  def Tracer.off
    Single.off
  end
  
end

if File.basename($0) =~ Tracer::MY_FILE_NAME_PATTERN
  $0 = ARGV[0]
  ARGV.shift
  
  Tracer.on
  require $0
end




__
..........................................石塚 圭樹@日本ラショナル...
----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---

In This Thread

Prev Next