ruby – 使用pry-byebug设置条件断点
发布时间:2020-12-17 02:49:39 所属栏目:百科 来源:网络整理
导读:给出以下代码: require 'pry-byebug'10.times.with_index do |i| binding.pry puts iend 我想在“pry-byebug”中“循环直到i == 5然后休息”.从运行它帮助打破它似乎你可以通过“断点#”或“线#”识别断点.它似乎也可以使用条件,但是我没有让它工作: 试图
给出以下代码:
require 'pry-byebug' 10.times.with_index do |i| binding.pry puts i end 我想在“pry-byebug”中“循环直到i == 5然后休息”.从运行它帮助打破它似乎你可以通过“断点#”或“线#”识别断点.它似乎也可以使用条件,但是我没有让它工作: 试图在#行上设置断点: $ 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| 然后运行代码.当它到达断点时,然后使用您想要的条件设置一个新的断点并继续. 回到你的实际代码.不要这样做: 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| 第二个只传递当前的“时间”值,从而产生更简单的代码. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |