首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调用一个方法并立即进入该方法

如何调用一个方法并立即进入该方法
EN

Stack Overflow用户
提问于 2019-05-01 17:26:26
回答 1查看 228关注 0票数 7

在pry调试会话期间,当我想要检查FooClass.new.foo的逐步执行时,我会在pry控制台中执行此操作

代码语言:javascript
复制
$ 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

这是有效的,但我需要查找路径,行,它留下了一个断点,我有时必须删除。

有一种更快的方法:

代码语言:javascript
复制
break FooClass#foo
FooClass.new.foo

但这仍然是两个步骤,并且断点仍然存在。

有没有一种方法可以在一个命令中完成,比如

代码语言:javascript
复制
step-into FooClass.new.foo

它将启动一个pry子会话,进入方法执行,并在它退出/完成后,我返回到原始会话,没有留下额外的断点?

换句话说:我正在调试,之前看到了一个叫做几行的方法(我不能立即进入它)。我不想在源代码中放入binding.pry (再次启动调试会话可能需要很长时间)。

EN

回答 1

Stack Overflow用户

发布于 2021-11-06 18:40:04

这个问题隐藏着复杂性。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55934140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档