我正在使用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 调试器中实现这一点?
使用撬动,您可以使用watch variable
- 这将在每一步显示变量的值。
您应该能够编写一个插件,在评估这是否正是您想要的表达式后仅显示表达式。撬插件
你可以做一些简单的事情,比如
Pry.hooks.add_hook(:after_eval, "reporter") do |output, binding, pry|
$watch ||= []
$watch.each {|block| block.call}
end
$watch = [-> { puts "hello"}]
或者类似的东西,会在每次新的评估后报告"你好"。(但是,这未经测试,目前在移动设备上)