我在名为foo.rb
def foo(msg)
msg
end
def bar
thing = 123
thing
end
debugger
p foo(:hai)
我在调试模式下运行程序,如下所示:
ruby --debug -r debug foo.rb
注意我确保通过debug
加载了stdlib -r
,并且还使用--debug
所以我得到的第一个输出是意料之外的:
Debug.rb
Emacs support available.
/Users/M/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:57: RUBYGEMS_ACTIVATION_MONITOR.enter
之后,如果我按c
进行'继续',程序将以以下错误结束:
Exception `NameError' at foo.rb:10 - undefined local variable or method `debugger' for main:Object foo.rb:10:in `<main>': undefined local variable or method `debugger' for main:Object (NameError)
任何人都可以告诉我我做错了什么,以及如何实际获得调试模式以识别相关的debugger
命令(如果这甚至是正确使用的命令;文档根本不清楚在此)
注意:我对此实例中的第三方gems不感兴趣(例如pry或ruby-debug)。我只对了解如何使用Ruby
附带的stdlib调试器感兴趣由于这个问题得到了回答,我已经开始为未来的参考创造了一个要点。对于任何绊倒此线程的人,您可能会发现它很有用:https://gist.github.com/Integralist/5658cb218bb50494a1fa
答案 0 :(得分:0)
不要使用-r
。加载交互式调试会话的整个机制是文字代码行require 'debug'
。
您的代码应如下所示:
def foo(msg)
msg
end
def bar
thing = 123
thing
end
require 'debug'
p foo(:hai)
您只需输入ruby <program_name>.rb
即可运行该程序。