C
Christoph Neubauer
Hi Rubyists !
I'm using ruby 1.6.8 (2002-12-24) [i586-mswin32]
What I tinkered for tracing is (simplified) this:
#begin definition
def traceEntry (*args)
puts "\n"
puts ("ENTRY " + caller[0])
args.each {|arg| puts ("ARG: " + arg.to_s)}
end
def traceExit
puts ("EXIT " + caller[0])
puts "\n"
end
#end definition
#begin usage
def method1 (arg1 = 0, arg2 = false, arg3 = 'hello')
traceEntry (arg1, arg2, arg3)
# do some stuff
traceExit
end
method1
method1 (1, true, 'world')
#end usage
It produces this:
#begin output
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
ARG: 0
ARG: false
ARG: hello
EXIT SimpleTracingWithRuby.rb:20:in `method1'
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
ARG: 1
ARG: true
ARG: world
EXIT SimpleTracingWithRuby.rb:20:in `method1'
#end output
My question is:
How do I know the names of the formal arguments of the actual caller of
TraceEntry ?
Or by Example:
#begin desired usage
def method1 (arg1 = 1, arg2 = true, arg3 = 'hello')
traceEntry
# do some stuff
traceExit
end
#end desired usage
#begin desired output
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
arg1: 0
arg2: false
arg3: hello
EXIT SimpleTracingWithRuby.rb:20:in `method1'
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
arg1: 1
arg2: true
arg3: world
EXIT SimpleTracingWithRuby.rb:20:in `method1'
#end desired output
Any ideas welcomed !
Chris
I'm using ruby 1.6.8 (2002-12-24) [i586-mswin32]
What I tinkered for tracing is (simplified) this:
#begin definition
def traceEntry (*args)
puts "\n"
puts ("ENTRY " + caller[0])
args.each {|arg| puts ("ARG: " + arg.to_s)}
end
def traceExit
puts ("EXIT " + caller[0])
puts "\n"
end
#end definition
#begin usage
def method1 (arg1 = 0, arg2 = false, arg3 = 'hello')
traceEntry (arg1, arg2, arg3)
# do some stuff
traceExit
end
method1
method1 (1, true, 'world')
#end usage
It produces this:
#begin output
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
ARG: 0
ARG: false
ARG: hello
EXIT SimpleTracingWithRuby.rb:20:in `method1'
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
ARG: 1
ARG: true
ARG: world
EXIT SimpleTracingWithRuby.rb:20:in `method1'
#end output
My question is:
How do I know the names of the formal arguments of the actual caller of
TraceEntry ?
Or by Example:
#begin desired usage
def method1 (arg1 = 1, arg2 = true, arg3 = 'hello')
traceEntry
# do some stuff
traceExit
end
#end desired usage
#begin desired output
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
arg1: 0
arg2: false
arg3: hello
EXIT SimpleTracingWithRuby.rb:20:in `method1'
ENTRY SimpleTracingWithRuby.rb:18:in `method1'
arg1: 1
arg2: true
arg3: world
EXIT SimpleTracingWithRuby.rb:20:in `method1'
#end desired output
Any ideas welcomed !
Chris