Ruby 发生异常后是否继续将pry用作调试器?
发射撬:Ruby 发生异常后是否继续将pry用作调试器?,ruby,pry,Ruby,Pry,发射撬: pry problem_12b.rb 这是我的控制台: 5: def divisors 6: return [1] if self == 1 7: primes, powers = self.prime_division.transpose 8: exponents = powers.map{|i| (0..i).to_a} 9: divisors = exponents.shift.product(*expone
pry problem_12b.rb
这是我的控制台:
5: def divisors
6: return [1] if self == 1
7: primes, powers = self.prime_division.transpose
8: exponents = powers.map{|i| (0..i).to_a}
9: divisors = exponents.shift.product(*exponents).map do |powers|
10: primes.zip(powers).map{|prime, power| prime ** power}.inject(:*)
11: end
12: divisors.sort.map{|div| [div, self / div]}
=> 13: binding.pry
14: end
让我们一起玩这个游戏:
28.divisors
p divisors
#[1, 7, 2, 14, 4, 28]
酷。。。现在假设我想执行第12行。我可以这样做:
p divisors.sort.map{|div| [div, self / div]}
#[[1, 28], [2, 14], [4, 7], [7, 4], [14, 2], [28, 1]]
我想说的是:p行(12)
(您在此处插入代码),因为这不正确,它会爆炸
Exception: NoMethodError: undefined method `line' for 28:Fixnum
在它爆炸后,我如何后退到上面的第一个代码块。我唯一的选择不能是退出代码>和撬动问题\u 12b.rb
是否再次出现
重述:
好吧,你不能在普赖尔做这件事。看看为什么这是困难的。您可以检查以解决此问题(提前放置断点,然后使用步骤向前移动等)。您可以编写高级(甚至全局)异常处理程序。您需要某种“调试标志”因此,此处理程序仅在调试时才处于活动状态。您永远不会希望在生产环境中使用此类处理程序。我可以为您的问题建议一个更具体的标题吗?例如:“在异常发生后继续使用pry作为调试器?”@JaredBeck让我们看看它是否有帮助!:)