6

我正在使用 Ruby 2.2.2、Pry 和“pry-byebug”。该continue语句删除 have in 中的所有监视变量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 中实现这一点调试器?

4

2 回答 2

2

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

于 2018-05-01T10:10:11.650 回答
1

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

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

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

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

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

于 2017-06-01T18:23:10.773 回答