ruby-debug with Pow - 断点从未命中

99m*_*les 8 ruby-on-rails ruby-debug ruby-on-rails-3 rack-pow

我正在尝试使用ruby-debug和Pow.Rails 3 app.

我在这里做了一切:https: //gist.github.com/1098830

我已经多次重启服务器和机器了.我可以让rdebug连接:

? rdebug -c
Connected.
Run Code Online (Sandbox Code Playgroud)

但它永远不会停在断点处.

知道会发生什么吗?我几小时前得到了几个断点,而不是从那以后.

调节器

  def index
    debugger
    ...
  end
Run Code Online (Sandbox Code Playgroud)

的Gemfile

gem 'ruby-debug19', :require => 'ruby-debug'
Run Code Online (Sandbox Code Playgroud)

development.rb

EG::Application.configure do
  ...
  require 'ruby-debug'
  Debugger.start_remote
  Debugger.settings[:autoeval] = true
  puts "=> Debugger enabled"
end
Run Code Online (Sandbox Code Playgroud)

kra*_*zky 8

这是因为Pow默认运行两个工作进程,而rdebug只连接其中一个.如果其他进程提供请求,则没有骰子.解决方案是强制Pow运行单个工作进程,如下所示:

  1. 编辑〜/ .powconfig来包含 export POW_WORKERS=1
  2. 通过终止Pow进程重启Pow本身

您现在应该在每个请求上点击断点.


jay*_*eff 2

12 年 9 月更新

我切换到gem - 一个对 ruby​​ 1.9.2/3 有更好支持debugger的 forkruby-debug19

这还可以简化development.rb中远程调试的配置。我每次都会遇到断点并且没有挂起的进程。

require 'debugger'
Debugger.start_remote
Run Code Online (Sandbox Code Playgroud)

原答案

尝试启用 wait_connection (并重新启动 pow)

require 'ruby-debug'
Debugger.wait_connection = true
Debugger.start_remote
Debugger.settings[:autoeval] = true
puts "=> Debugger enabled"
Run Code Online (Sandbox Code Playgroud)

重新加载源也不错:Debugger.settings[:reload_source_on_change] = true

  • “Debugger.wait_connection = true”会挂起你的进程,所以要小心。 (2认同)