I'm running into an unexpected issue with the debugger, and I'm hoping someone
here can help me out. I' ve got a short program like this (stolen directly
from zenspider's RubyInline tutorial):
1.upto(max_loop) do
avg = a.average
$stderr.print "."
end
$stderr.puts ""
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Everytime I step to line 7 (the self.each ... line) or do a step nnn which
executes line 7, the debugger stops there. Neither step or next will move
past this line. If I try to continue the program, it will run to the next
breakpoint or end of the program.
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
pate@linux:~/scripts> ruby -rdebug averager.rb
Debug.rb
Emacs support available.
averager.rb:3:class Array
(rdb:1) s 13
averager.rb:7: self.each { |x| result += x }
(rdb:1) s
averager.rb:7: self.each { |x| result += x }
(rdb:1) s
averager.rb:7: self.each { |x| result += x }
(rdb:1) s
averager.rb:7: self.each { |x| result += x }
(rdb:1) n
averager.rb:7: self.each { |x| result += x }
(rdb:1) n
averager.rb:7: self.each { |x| result += x }
(rdb:1) n
averager.rb:7: self.each { |x| result += x }
(rdb:1) n 20
averager.rb:7: self.each { |x| result += x }
(rdb:1) c
.....
pate@linux:~/scripts>
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Any idea what's going on? Is this a bug in the debugger, or am I
misunderstanding something?
--
thanks,
-pate
-------------------------
We are often unable to tell people what they need to know, because
they want to know something else, and would therefore only
misunderstand what we said
- the Raven (George MacDonald, Lilith)
I'm running into an unexpected issue with the debugger, and I'm
hoping someone here can help me out. I' ve got a short program like
this (stolen directly from zenspider's RubyInline tutorial):
1.upto(max_loop) do
avg = a.average
$stderr.print "."
end
$stderr.puts ""
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Everytime I step to line 7 (the self.each ... line) or do a step nnn
which executes line 7, the debugger stops there. Neither step or
next will move past this line. If I try to continue the program, it
will run to the next breakpoint or end of the program.
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
pate@linux:~/scripts> ruby -rdebug averager.rb
Debug.rb
Emacs support available.
averager.rb:3:class Array
(rdb:1) s 13
averager.rb:7: self.each { |x| result += x }
(rdb:1) s
averager.rb:7: self.each { |x| result += x }
(rdb:1) s
averager.rb:7: self.each { |x| result += x }
(rdb:1) s
averager.rb:7: self.each { |x| result += x }
(rdb:1) n
averager.rb:7: self.each { |x| result += x }
(rdb:1) n
averager.rb:7: self.each { |x| result += x }
(rdb:1) n
averager.rb:7: self.each { |x| result += x }
(rdb:1) n 20
averager.rb:7: self.each { |x| result += x }
(rdb:1) c
....
pate@linux:~/scripts>
-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Any idea what's going on? Is this a bug in the debugger, or am I
misunderstanding something?
My guess would be that Array#each is a method implemented in C and that
your block is just a single line block. The debugger can't step into
Array#each and maybe it cannot stop in the block because it's on the same
line. Did you try to convert the block to a multiline block?
If you step over that line then you execute a single each call, which
happens to execute multple callbacks of the block.
this minimizes, but doesn't solve, the problem. stepping to line 13
shouldn't trip on line 7 at all should it, or should it?
···
On 6/30/05, Florian Frank <flori@nixe.ping.de> wrote:
>
--
Florian Frank
--
thanks,
-pate
-------------------------
We are often unable to tell people what they need to know, because
they want to know something else, and would therefore only
misunderstand what we said
- the Raven (George MacDonald, Lilith)
My guess would be that Array#each is a method implemented in C and that
your block is just a single line block. The debugger can't step into
Array#each and maybe it cannot stop in the block because it's on the same
line. Did you try to convert the block to a multiline block?
Correct it is a fundamental problem with the current ruby
implementation and it does work when there are two code lines like
def average
result = 0
self.each { |x|
dummy = 1
result += x
}
result / self.size.to_f
end
···
--
Best regards, emailto: scholz at scriptolutions dot com
Lothar Scholz http://www.ruby-ide.com
CTO Scriptolutions Ruby, PHP, Python IDE 's
this minimizes, but doesn't solve, the problem. stepping to line 13 shouldn't trip on line 7 at all should it, or should it?
The block call is a step on its own, you can "s 99990" if you really want. The "line" is a bit misleading, it's probably named after the line event of the trace function.