如何退出Ruby Pry会话并继续下一条语句?

yhxst69z  于 2023-06-22  发布在  Ruby
关注(0)|答案(2)|浏览(109)

我使用Pry gem(http://pryrepl.org)来测试我的程序。有时会出现异常,所以我使用以下语法:

require "pry"    
begin
  statement 1
  statement 2 *
  statement 3
rescue => e
  binding.pry
end

当“声明2”出现例外时,我在救援条款中得到了一次窥探。我可以检查我的变量等,“e.回溯”显示异常的原因,以及哪一行引起的,等等。然后我通常会在源文件中做一些修改,以避免下次出现异常。但是我不想再次启动我的程序,因为它是一个很长的时间再次到达“声明2”。所以我的问题是我如何退出Pry会话并继续我的“声明3”程序?如果我尝试键入“继续”或“下一步”,我只得到错误消息。

mum43rcc

mum43rcc1#

所以我的问题是我如何退出Pry会话并继续我的“声明3”程序?
如果pry-debugger不适合你,那么:

require "pry"    

begin
  statement 1
  statement 2
rescue => e
  binding.pry
end

begin
  statement 3
rescue => e
  binding.pry
end

例如:

require 'pry'

def a
  puts 'a'
end

def b
  puts 'b'
  nil[1]
end

def c
  puts 'c'
end


begin
  a
  b
rescue => e
  binding.pry
end

begin
  c
rescue => e
  binding.pry
end

--输出:--

~/ruby_programs$ r 1.rb 
a
b

From: /Users/7stud/ruby_programs/1.rb @ line 22 :

    17: 
    18: begin
    19:   a
    20:   b
    21: rescue => e
 => 22:   binding.pry
    23: end
    24: 
    25: begin
    26:   c
    27: rescue => e

[1] pry(main)> exit
c
~/ruby_programs$

当然不行,如果你的问题是,
如果我的程序在随机的一行抛出了一个错误,我如何才能让pry在下一行继续执行呢?
...
如果我尝试键入“继续”或“下一步”,我只得到错误消息。
好的执行在这里:

require "pry" 

begin
  statement 1
  statement 2 *
  statement 3
rescue => e
  binding.pry   #<== Pry executed here
end
#<=== Next line to execute after rescue clause
hivapdat

hivapdat2#

我不认为这是可能的改变来源和继续执行后,你这样做。我会尝试将pry语句放置在语句2附近,然后重新运行。

statement 1
binding.pry
statement 2
statement 3

相关问题