Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting breakpoint in different file has no effect

The ruby debugger does not halt on breakpoints I set in files different from the on the execution starts in. For example, consider these two files, foo.rb:

# foo.rb
class Foo
  def bar
    puts "baz"
  end
end

and main.rb:

# main.rb
require './foo'
Foo.new.bar

I start debugging using ruby -r debug .\main.rb. Now, when I try to set a breakpoint on a specific line in another file using b ./foo.rb:4, I get the message Set breakpoint 1 at foo.rb:4, but when I cont, the program executes to the end, and the debugger never halts. However, if I break on a line in main.rb, e.g. b ./main.rb:3, or a method, e.g. b Foo.bar, the debugger halts as expected.

Why doesn't the debugger halt at breakpoints in files other than the main file?

Update: I have tried this with Ruby 1.9.3 on Windows 7 as well as OS X 10.8; it doesn't work in either environment.

I have also just realized that the debugger quits after the script has run till the end: I start debugging main.rb, use cont, then baz is printed on the console and I'm right back in the shell. Is this the expected behaviour, or might the debugger have crashed?

like image 945
waldrumpus Avatar asked Sep 04 '12 12:09

waldrumpus


1 Answers

Wow, that is weird. Not sure if this helps, but maybe you could do this. Step over the require with next so that Foo is loaded then

b Foo:bar

that should at least break on bar

like image 158
rainkinz Avatar answered Oct 04 '22 22:10

rainkinz