42

当我写debugger它没有开始:

NoMethodError: undefined method `run_init_script' for Debugger:Module
from /usr/local/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:239:in `debugger'
from (irb):4

如果我运行rake my:task --debugger,它会立即让我返回控制台。如何调试 rake 任务?

4

6 回答 6

41

我找到了解决方案。

$ gem install ruby-debug
$ ruby-debug rake my:task

或在某些系统上

$ rdebug rake my:task
于 2010-04-18T21:07:45.167 回答
27

Andrey Kouznetsov 的回答对我使用 Ruby 1.9.3 不起作用。ruby-debug gem 似乎不支持 Ruby 1.9。我不得不使用调试器 gem:https ://github.com/cldwalker/debugger 。

  1. 添加gem 'debugger'到我的 Gemfile 的开发组。
  2. 运行bundle
  3. 添加require 'debugger'到我的 rake 任务的顶部。
  4. 在我的 rake 任务中添加对debugger我想要断点的位置的调用。
  5. 从命令行正常运行 rake 任务,例如:rake my:task.
于 2013-03-08T20:46:22.747 回答
12

我强烈建议为此

bundle install pry
require 'pry'
rake ...

在您的rake 任务文件中:

binding.pry 
于 2014-06-23T21:40:00.760 回答
7

这种方法对我不起作用。我刚刚在我的代码中添加了这个:

require 'ruby-debug'
# ... code ...
debugger
于 2011-06-29T20:58:00.413 回答
3

Visual Studio Code内置了相当不错的调试器。如果有人发现这个正在寻找一种让它与 rake 一起工作的方法,这里有一个工作配置:

{
    "name": "Debug a rake task",
    "type": "Ruby",
    "request": "launch",
    "useBundler": true,
    "cwd": "${workspaceRoot}",
    "program": "/usr/local/bin/rake",
    "args": ["all"]
}

这将运行 rake 任务all。您可能必须更改 rake 的路径,我没有找到在 PATH 中运行该路径的方法。

于 2016-10-22T07:31:40.183 回答
1

ByeBug 是另一个 2.0+

https://github.com/deivid-rodriguez/byebug

于 2015-04-10T00:59:15.317 回答