Skip to content
This repository has been archived by the owner on Nov 15, 2021. It is now read-only.

ruby2: next command not stepping to next line #89

Closed
willbryant opened this issue Jul 16, 2013 · 5 comments
Closed

ruby2: next command not stepping to next line #89

willbryant opened this issue Jul 16, 2013 · 5 comments

Comments

@willbryant
Copy link

The "next" command used to reliably step over the calls in the current line, leaving you on the next line. Now debugger seems to step into some methods when you use it.

For example, here it's stepped inside the #exceptions method, which happens to be an ActiveRecord attribute method; it doesn't step inside #empty? though, so it sometimes works.

(I've removed some lines of our real code from this backtrace)

[1239, 1248] in /Users/will/powershop/powershop/app/models/billing.rb
   1242      end
   1243  debugger
=> 1244      if exceptions.empty?
   1245        self.exceptions = nil
(rdb:1) exceptions
{}
(rdb:1) n
/Users/will/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/bundler/gems/rails-7e46c20753a4/activerecord/lib/active_record/attribute_methods/read.rb:72
#{internal_attribute_access_code(attr_name, attribute_cast_code(attr_name))}

[67, 76] in /Users/will/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/bundler/gems/rails-7e46c20753a4/activerecord/lib/active_record/attribute_methods/read.rb
   67            # we first define with the __temp__ identifier, and then use alias method to
   68            # rename it to what we want.
   69            def define_method_attribute(attr_name)
   70              generated_attribute_methods.module_eval <<-STR, __FILE__, __LINE__ + 1
   71                def __temp__
=> 72                  #{internal_attribute_access_code(attr_name, attribute_cast_code(attr_name))}
   73                end
   74                alias_method '#{attr_name}', :__temp__
   75                undef_method :__temp__
   76              STR
(rdb:1) n
/Users/will/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/bundler/gems/rails-7e46c20753a4/activerecord/lib/active_record/attribute_methods/serialization.rb:15
state == :serialized ? unserialize : value

[10, 19] in /Users/will/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/bundler/gems/rails-7e46c20753a4/activerecord/lib/active_record/attribute_methods/serialization.rb
   10          self.serialized_attributes = {}
   11        end
   12  
   13        class Attribute < Struct.new(:coder, :value, :state)
   14          def unserialized_value
=> 15            state == :serialized ? unserialize : value
   16          end
   17  
   18          def serialized_value
   19            state == :unserialized ? serialize : value
(rdb:1) n
/Users/will/powershop/powershop/app/models/billing.rb:1245
self.exceptions = nil

[1240, 1249] in /Users/will/powershop/powershop/app/models/billing.rb
   1242      end
   1243  debugger
   1244      if exceptions.empty?
=> 1245        self.exceptions = nil
   1246        .. more code here ..
@cldwalker
Copy link
Owner

As stated in the readme , 2.0 isn't fully working. See #47 and #69 for context. More work needs to be done to port debugger to support 2.0.

I will leave this open for others who encounter this until 2.0 support comes. I encourage anyone to work on this and the prerequisite tickets as I don't have the bandwidth or the need.

@bitaxis
Copy link

bitaxis commented Sep 13, 2013

As an alternative, I have been using the byebug debugger, which doesn't have this issue.

@bartocc
Copy link

bartocc commented Oct 8, 2013

@cldwalker Any improvement on full ruby 2.0 support ? Especially for this next / step issue ?

I believe byebug will become the default debugger for many developers in the short term if the debugger gem does not fix this ...

@cldwalker
Copy link
Owner

@bartocc I rarely use ruby at work so this is prioritized accordingly. If you've read the above links to #47 and #69, then you're aware I've put a call out to the community. So far the community has responded with partial support and a pseudo-fork with byebug. If you're interested in this, please contribute or encourage others to do so.

@cldwalker
Copy link
Owner

Closing since I'm scoping debugger to just 1.9.2 and 1.9.3. For more see #125 (comment)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants