如何调试Ruby方法并查看我的局部变量的值是否在变化?

问题描述 投票:1回答:2

以下面的方法为例,然后调用方法:

def count(n)
  x=3
  y=5

  n+=x
  n-=y

  puts n
end

count(3)

我想知道无论如何当我在我的终端中运行这个脚本时,当它到达实际调用该方法的count(3)行时,而不是简单地输出“n”,无论如何我可以逐行浏览方法,我可以看到我的局部变量(n,x和y),这样我就可以看到“n”的值随着方法的执行而变化,然后将最终值输出到我的终端。

ruby debugging
2个回答
1
投票

你可以用byebug gem完成这个。

您可以通过简单地插入byebug行在代码中的任何位置添加断点,也可以通过调用脚本在调试模式下运行整个脚本,如下所示:

byebug something-awesome.rb

进入调试模式后,可以使用step命令一次一行地执行代码。

以下是此过程的示例:

[1, 10] in /Desktop/something-awesome.rb
=>  1: def count(n)
    2:   x = 3
    3:   y = 5
    4:
    5:   n += x
    6:   n -= y
    7:
    8:   puts n
    9: end
   10:
(byebug) step

[2, 11] in /Desktop/something-awesome.rb
    2:   x = 3
    3:   y = 5
    4:
    5:   n += x
    6:   n -= y
    7:
    8:   puts n
    9: end
   10:
=> 11: count(3)
(byebug) step

[1, 10] in /Desktop/something-awesome.rb
    1: def count(n)
=>  2:   x = 3
    3:   y = 5
    4:
    5:   n += x
    6:   n -= y
    7:
    8:   puts n
    9: end
   10:
(byebug) step

[1, 10] in /Desktop/something-awesome.rb
    1: def count(n)
    2:   x = 3
=>  3:   y = 5
    4:
    5:   n += x
    6:   n -= y
    7:
    8:   puts n
    9: end
   10:
(byebug) x
3

请注意,在我越过第2行(在控制台输出的底部)之后,我现在可以键入x以查看x在代码中此时的值。

有关所有可用命令的列表,请查看Byebug文档的commands section


0
投票

我非常喜欢pry宝石。

它是一个非常强大和强大的界面,允许您通过实例和类(即cd User.first),列表方法(ls)更改目录,甚至与shell(shell-mode; .pwd)进行交互 - 所有这一切都可以通过从您想要的任何地方放入一个简单的binding.pry来实现。

另外值得注意的是Ruby 2.5随附binding.irb发货 - 我还没有看过它,但那将是原生的等价物,并希望消除对第三方宝石的需求。

© www.soinside.com 2019 - 2024. All rights reserved.