vim-ruby-debugger icon indicating copy to clipboard operation
vim-ruby-debugger copied to clipboard

Doesn't stop at breakpoints

Open dhruvasagar opened this issue 12 years ago • 20 comments

Hey,

I am using gvim on ubuntu, I have also tested the same scenario of trying to debug a rails application from vim inside a terminal however it just does not stop at any breakpoints.

There is nothing in the logs to indicate anything having went wrong.

dhruvasagar avatar Jan 16 '13 09:01 dhruvasagar

There is not enough information which could help me :) What version of Ruby? What version of Rails? Also, please show everything from the files inside vim-ruby-debugger/tmp dir, i.e. ruby_debugger_log, ruby_debugger_output, ruby_debugger.

astashov avatar Jan 16 '13 17:01 astashov

I was working with ruby 1.9.2-p180, rails v3.2. The logs inside tmp directory didn't have much, just some warnings that rails s generated. The rails server did get started like it should, but when going through the pages where I kept break points, the debugger didn't stop at them.

I am using ruby-debug-ide19.

dhruvasagar avatar Jan 17 '13 02:01 dhruvasagar

Please attach the logs anyway. :) Otherwise, I really can't do anything to help you.

astashov avatar Jan 17 '13 02:01 astashov

$ cat ruby_debugger

<breakpointAdded no="1" location="/home/dhruvasagar/Work/bounty/app/controllers/employer_home_controller.rb:4"/>

$ cat ruby_debugger_log

(empty)

$ cat ruby_debugger_output

Fast Debugger (ruby-debug-ide 0.4.9) listens on :39767
/home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/smtp.rb:806: warning: already initialized constant SMTPSession
/home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:687: warning: already initialized constant POP
/home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:688: warning: already initialized constant POPSession
/home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:689: warning: already initialized constant POP3Session
/home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:702: warning: already initialized constant APOPSession
=> Booting Thin
=> Rails 3.2.8 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
>> Thin web server (v1.4.1 codename Chromeo)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop


Started GET "/" for 127.0.0.1 at 2013-01-16 14:40:02 +0530

(more rails logs stripped)

dhruvasagar avatar Jan 17 '13 02:01 dhruvasagar

Ah. Right. Add

let g:ruby_debugger_debug_mode = 1

to .vimrc file, and try again.

astashov avatar Jan 17 '13 02:01 astashov

<breakpointAdded no="1" location="/home/dhruvasagar/Work/bounty/app/controllers/employer_home_controller.rb:4"/>

This line means that server actually received the response from ruby-debug-ide, but by some reason, Vim didn't handle it. Let's see what will be in logs though, when you add that line to your .vimrc

astashov avatar Jan 17 '13 02:01 astashov

Cool, let me do that.

dhruvasagar avatar Jan 17 '13 02:01 dhruvasagar

==> ruby_debugger <==

<breakpointAdded no="1" location="/home/dhruvasagar/Work/bounty/app/controllers/employer_home_controller.rb:5"/>

==> ruby_debugger_log <== Ruby_debugger.rb, 08:43:33 : Queue is not empty, we will pass queue to rdebug-ide Ruby_debugger.rb, 08:43:33 : Putting message to rdebug-ide: start Ruby_debugger.rb, 08:43:33 : Sending message to vim-ruby-debugger: <breakpointAdded no="1" location="/home/dhruvasagar/Work/bounty/app/controllers/employer_home_controller.rb:5"/> Ruby_debugger.rb, 08:43:33 : Put message to temp file Ruby_debugger.rb, 08:43:33 : Executing command: gvim --servername GVIM -u NONE -U NONE --remote-send "<C-\><C-N>:call RubyDebugger.receive_command()<CR>" Vim plugin, 08:43:33: Received command: <breakpointAdded no="1" location="/home/dhruvasagar/Work/bounty/app/controllers/employer_home_controller.rb:5"/> Vim plugin, 08:43:33: Received the breakpoint message, will add PID and number of breakpoint to the Breakpoint object Vim plugin, 08:43:33: Found the Breakpoint object for /home/dhruvasagar/Work/bounty/app/controllers/employer_home_controller.rb:5 Vim plugin, 08:43:33: Added id: 1, PID:22262 to Breakpoint Vim plugin, 08:43:33: Breakpoint is set: /home/dhruvasagar/Work/bounty/app/controllers/employer_home_controller.rb:5

==> ruby_debugger_output <== Fast Debugger (ruby-debug-ide 0.4.16, ruby-debug-base 0.11) listens on 127.0.0.1:39767 /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/smtp.rb:806: warning: already initialized constant SMTPSession /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:687: warning: already initialized constant POP /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:688: warning: already initialized constant POPSession /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:689: warning: already initialized constant POP3Session /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p180@bounty/gems/tlsmail-0.0.1/lib/net/pop.rb:702: warning: already initialized constant APOPSession

dhruvasagar avatar Jan 17 '13 03:01 dhruvasagar

Yet it doesn't stop at the breakpoint. What I am noticing is that your plugin is using --servername GVIM, do I need to put this in my .gvimrc, for progname setting ?

dhruvasagar avatar Jan 17 '13 03:01 dhruvasagar

It's actually pretty weird it doesn't stop at the breakpoint, according to the logs, it successfully set the breakpoint. Hmm, maybe Thin forks new processes for response handlers, could you please try to use e.g. webrick?

astashov avatar Jan 17 '13 04:01 astashov

I.e. :Rdebugger 'script/rails s webrick' or something like that.

astashov avatar Jan 17 '13 04:01 astashov

Didn't work with webrick either...

dhruvasagar avatar Jan 17 '13 07:01 dhruvasagar

Should g:ruby_debugger_progname be set to 'gvim' ?

dhruvasagar avatar Jan 17 '13 07:01 dhruvasagar

No, it shouldn't. It seems like everything works just fine, except one little thing - it doesn't stop at breakpoints :) Maybe try to run some little script?

Create a.rb file in your current dir, which looks like:

a = 1
b = 2
c = a + b
c

Then open it in vim, set a breakpoint to e.g. c = a + b (\b), then run debugger with :Rdebugger a.rb. Then see what happens, and if it doesn't work - send logs again.

Thanks!

astashov avatar Jan 17 '13 22:01 astashov

I get this in ruby_debug_output

Fast Debugger (ruby-debug-ide 0.4.16, ruby-debug-base 0.11) listens on 127.0.0.1:39767
Exception in DebugThread loop: undefined method `is_binary_data?' for "1":String
Backtrace:
/home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/xml_printer.rb:124:in `print_variable'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/xml_printer.rb:73:in `block (2 levels) in print_variables'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/xml_printer.rb:72:in `each'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/xml_printer.rb:72:in `block in print_variables'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/xml_printer.rb:253:in `print_element'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/xml_printer.rb:69:in `print_variables'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/command.rb:85:in `method_missing'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/commands/variables.rb:130:in `execute'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:78:in `block (2 levels) in process_context_commands'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:71:in `each'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:71:in `block in process_context_commands'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:70:in `catch'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:70:in `process_context_commands'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:39:in `block in process_commands'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:35:in `catch'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug/processor.rb:35:in `process_commands'
  from: /home/dhruvasagar/.rvm/gems/ruby-1.9.2-p290@global/gems/ruby-debug-ide-0.4.16/lib/ruby-debug-ide.rb:140:in `block in start_control'

dhruvasagar avatar Jan 18 '13 02:01 dhruvasagar

Should I be using ruby-debug-ide or ruby-debug-ide19 ? I am using ruby 1.9.2-p290 this time.

dhruvasagar avatar Jan 18 '13 02:01 dhruvasagar

If Ruby 1.9.2, then ruby-debug-ide19. Heh, weird. Well, String#is_binary_data? is defined in syck/lib/syck/rubytypes.rb, try to add require 'syck' to the example script. I.e.:

require 'syck'
a = 1
b = 2
c = a + b
c

Something like that.

astashov avatar Jan 18 '13 06:01 astashov

That worked perfectly.

I am using 'pry' with rails, could that be causing a problem ? I did try once to debug after having removed pry gem though, but it didn't work then. Also I am using RVM, so maybe that is also causing issues at times.

Besides this, going forward, from what I have read is that ruby-debug-ide(19) have been depracated in the sense that they are not being maintained, instead this 'debugger' gem is being recommended, I also saw your post mentioning that you are trying to push changes to it to add support for this, is there someway I could help out ?

dhruvasagar avatar Jan 18 '13 07:01 dhruvasagar

No, it should work perfectly with RVM, since gvim captures all environment variables after start, AFAIK. Should not be related to 'pry' also, but not 100% sure, since I never used it with debugger. Maybe stupid question, but are you absolutely sure you are going through the line where the breakpoint is set? Try to add logger's output or simple puts to check that.

Yeah, I actually completed work for adding XML support to 'debugger' (you can find it here - https://github.com/astashov/debugger/tree/xml-output), but now I need it to be merged into the original repo. There are 2 big parts - first one is totally new test suite for debugger, and the second one - adding XML support. Maintainer of debugger promised to review the new test suite pull request this weekend, when he merges that pull request, I'll create another one for adding XML support (can't do that simultaneously, since XML support depends on new test suite).

So, I even don't know how could you help here. :) Now we only have to wait when debugger's maintainer reviews all that stuff.

astashov avatar Jan 18 '13 07:01 astashov

Yea I am sure that it is going through the line where I set the break point, I have set it in the controller, I also tried setting in the view itself, but to no avail, it doesn't stop :/.

dhruvasagar avatar Jan 18 '13 07:01 dhruvasagar