【问题标题】:How can I watch a variable in Ruby Pry?如何在 Ruby Pry 中查看变量?
【发布时间】:2017-01-23 16:54:51
【问题描述】:

我正在使用 Ruby 2.2.2、Pry 和“pry-byebug”。 continue 语句删除了 pry-byebug 中的所有监视变量:

[1] pry(main)> watch foo
Watching foo
watch: foo => 42
[2] pry(main)> watch
Listing all watched expressions:

1: foo => 42

[3] pry(main)> continue
[1] pry(main)> watch
No watched expressions

在每个continue 上丢失它们会使被监视的表达式变得毫无价值。如果我使用 next 并改为在代码中的同一点,则监视的表达式仍然存在;这只是导致问题的continue。目前我什至找不到关于 watch 声明的任何文档,所以我不知道为什么会发生这种情况。

更一般地说,我只想在每个 Pry 提示符上打印出一组表达式的值(或者,如果它们自上次打印以来发生了变化,则打印出来。)我怎样才能做到这一点在 Ruby 调试器中?

【问题讨论】:

  • 将 byebug 集成到 pry 中是相当的 hack。他们经常在一起玩得不好。以前没有用过手表,所以可惜不能用这个。也许只是给 byebug 的作者发电子邮件?

标签: ruby debugging pry byebug


【解决方案1】:

使用pry-moves 你可以使用watch variable - 这将在每一步显示变量的值。

【讨论】:

  • 还没有机会尝试这个,但它看起来像我想要的。
【解决方案2】:

您应该能够编写一个插件,在评估是否正是您想要的之后只显示表达式。 Pry plugins

你可以做一些简单的事情,比如

Pry.hooks.add_hook(:after_eval, "reporter") do |output, binding, pry|
  $watch ||= [] 
  $watch.each {|block| block.call} 
end

$watch = [-> { puts "hello"}] 

或类似的东西,会在每次新评估后报告“你好”。 (不过,这是未经测试的,目前在移动设备上)

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多