使用pry-byebug设置条件断点

姆比格拉斯

给出以下代码:

require 'pry-byebug'

10.times.with_index do |i|
  binding.pry
  puts i
end

我想i == 5在里面时“循环直到破裂” pry-byebug通过运行它help break,您似乎可以通过“ breakpoint#”或“ line#”来识别断点。似乎您也可以使用条件,但是我无法使用它:

尝试在第#行上设置断点:

$  ruby foo.rb

From: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ line 5 :

    1: require 'pry-byebug'
    2:
    3: 10.times.with_index do |i|
    4:   binding.pry
 => 5:   puts i
    6: end

[1] pry(main)> break foo.rb:5 if i == 5

  Breakpoint 1: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ 5 (Enabled) Condition: i == 5


    2:
    3: 10.times.with_index do |i|
    4:   binding.pry
 => 5:   puts i
    6: end


[2] pry(main)> continue
0

From: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ line 5 :

    1: require 'pry-byebug'
    2:
    3: 10.times.with_index do |i|
    4:   binding.pry
 => 5:   puts i
    6: end

[2] pry(main)> i
=> 1

首先设置断点,然后将条件置于断点上:

➜  ~/D/w/t/pry_debug  ruby foo.rb

From: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ line 5 :

    1: require 'pry-byebug'
    2:
    3: 10.times.with_index do |i|
    4:   binding.pry
 => 5:   puts i
    6: end

[1] pry(main)> break foo.rb:15

  Breakpoint 1: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ 15 (Enabled)



[2] pry(main)> break --condition 1 i == 5
[3] pry(main)> c
0

From: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ line 5 :

    1: require 'pry-byebug'
    2:
    3: 10.times.with_index do |i|
    4:   binding.pry
 => 5:   puts i
    6: end

[3] pry(main)> i
=> 1

如您所见,在两种情况下pry-byebug都不遵守条件,因为它停止得太早了。我该如何工作?

锡人

binding.pry从循环内部删除并将其放在前面10.times

binding.pry
10.times.with_index do |i|

然后运行代码。当它达到断点时,请使用您想要和的条件设置一个新的断点continue

回到您的实际代码。不要这样做:

10.times.with_index do |i|

相反,这几乎可以做同样的事情,但是更简单:

10.times do |i|

这是Ruby在做什么:

>> 2.times.with_index.to_a
[
  [0] [
    [0] 0,
    [1] 0
  ],
  [1] [
    [0] 1,
    [1] 1
  ]
]

>> 2.times.to_a
[
  [0] 0,
  [1] 1
]

首先是传入的数组[0,0][1,1]等等,所以对于你的正确性块参数需要是这样的:

10.times.with_index do |i, j|

第二个仅传递当前的“ times”值,从而产生更简单的代码。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章