1

有时,当我在 rails 控制台中工作时,我发现我想在调试器中逐步执行特定方法(来自我的 rails 应用程序)。过去,我通过在方法的源代码中临时添加调试器语句,然后从控制台调用该方法来完成此操作。

有没有一种方法可以从控制台“进入”一个方法,而无需编辑其源代码?

这在共享开发服务器上会特别好,这样我就不需要用 vi 输入随机调试器语句并记住以后删除它们。

我尝试了以下但并不奇怪它不起作用:

$ rails c --debugger
=> Debugger enabled
Loading development environment (Rails 3.2.13)
irb(main):001:0> def startdebug
irb(main):002:1>   debugger
irb(main):003:1>   MyModel.last.my_method
irb(main):004:1> end
=> nil
irb(main):005:0> startdebug

它说

*** No sourcefile available for (irb)

很快我就结束了 irb 代码而不是my_method.

4

1 回答 1

7

嗯,这听起来有点像元编程,你可以在运行时在你的模型中注入一个调试方法,它会在方法调用之前添加调试语句,这样你就可以根据需要检查调用,比如:

m = MyModel.last
m.class.send(:define_method, :debug_my_method){debugger; my_method}
m.debug_my_method

这应该在 irb 上执行(刚刚在 may rails 控制台上测试过)

于 2013-06-14T21:43:00.267 回答