如何使用Ruby调试动态定义的方法? (在repl会话中创建的方法)

时间:2019-04-18 10:08:58

标签: ruby debugging read-eval-print-loop pry byebug

是否可以在Ruby中调试动态定义的方法?如果是这样,我该如何实现?

所以我打开了一个新的Pry会话,并首先尝试了如下操作:

require "byebug"

def hello(x)
  byebug
  x += 1
  puts x
end

hello(5)

它对我大喊“ ***没有可用于(撬开)的源文件”。我仍然可以单步执行代码,但是看不到源代码。

然后我尝试这样做:

def hello(x)
  binding.pry
  x += 1
  puts x
end

hello(5)

现在反过来:我可以看到源代码,但是我无法单步执行代码(当我输入“ step”时,它会用“ NameError:未定义的局部变量或方法`喊着我”步骤“用于main:Object”)。 看起来Pry实际上确实具有所需的源,但是不幸的是调试器无法工作:(

我设法使用IPython在Python repl中做到了(尽管在标准Python repl中不起作用):

def hello(x):
    breakpoint()
    x += 1
    print(x)

hello(5)

我希望能够在Ruby中实现相同的目标

0 个答案:

没有答案