在pry调试会话期间,当我想要检查FooClass.new.foo的逐步执行时,我会在pry控制台中执行此操作
$ FooClass.new.foo #this gives me path and line of the method
break /path/to/foo_class.rb:LINE_WHERE_FOO_IS_DEFINED
FooClass.new.foo这是有效的,但我需要查找路径,行,它留下了一个断点,我有时必须删除。
有一种更快的方法:
break FooClass#foo
FooClass.new.foo但这仍然是两个步骤,并且断点仍然存在。
有没有一种方法可以在一个命令中完成,比如
step-into FooClass.new.foo它将启动一个pry子会话,进入方法执行,并在它退出/完成后,我返回到原始会话,没有留下额外的断点?
换句话说:我正在调试,之前看到了一个叫做几行的方法(我不能立即进入它)。我不想在源代码中放入binding.pry (再次启动调试会话可能需要很长时间)。
发布于 2021-11-06 18:40:04
这个问题隐藏着复杂性。
pry Foo.new.foo
or
Foo.new.foo.pry这会将您绑定到函数foo的返回值上,但这并不是您想要的。它还表明,当您的代码行Foo.new.foo运行时,函数要确切地知道要将绑定放在什么上是复杂的。
所以这就是我所感觉到的问题;它需要理解代码行上的表达式,才能理解在哪里放置断点。
如果您的代码Foo.new.foo已经是一个断点(例如,您有一个包含该代码的函数,并且您在类似的行上放置了一个断点),那么您可以输入step,您将进入Foo.new Foo.initialize instance of foo foo.foo,依此类推。因此,任何试图做你想做的事情的代码都会很难理解在表达式树中的什么位置停止并将你的放入pry。
这就是为什么您必须告诉pry在此上下文中在何处停止使用break。
https://stackoverflow.com/questions/55934140
复制相似问题