ruby - 使用 pry-byebug 设置条件断点

标签 ruby pry byebug

给定以下代码:

require 'pry-byebug'

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

我想在 pry-byebug 中“循环直到 i == 5 然后中断”。通过运行它 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 都不遵守条件,因为它停止得太早了。如何让它发挥作用?

最佳答案

我认为一种简单的方法是在您的代码中执行此操作:

require 'pry-byebug'

10.times.with_index do |i|
  binding.pry if i == 5
  puts i
end

或者如果你想在异常时停止,你可以这样做:

require 'pry-byebug'

10.times.with_index do |i|
  puts i rescue binding.pry # if the puts command throws an exception, you'll be taken to pry
end

关于ruby - 使用 pry-byebug 设置条件断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41474811/

相关文章:

ruby - 在 pry 中导航多行命令历史记录的奇怪错误

ruby-on-rails - 如何在依赖 gem 中添加调试器(binding.pry)?

ruby-on-rails - 有什么办法可以在乘客 + nginx 下运行 byebug?

ruby-on-rails - 运行 byebug 8.2.1 Mac M1 时出错

ruby-on-rails - rails 5 : Cron jobs using Whenever not running

ruby-on-rails - 如何在 bash shell 上捕获 rails runner "MyCloud::Deployment.checkuser"的输出

ruby - 在开发中使用 ruby​​ gem 进行 rails 和测试方法公开

ruby - 是否有 Ruby 文件解析问题/难题列表

ruby - 创建远程 Drb 服务器(用于 pry-remote)

ruby-on-rails - 当使用 Rails 运行 byebug session 并且服务器超时时,如何恢复我的文本/光标?