我可以在回溯中制作ruby显示方法参数值吗?

时间:2010-08-26 15:22:18

标签: ruby debugging backtrace

使用MRI 1.9

当引发异常导致回溯被打印时,如果回溯显示接收器和方法参数的值以及方法名称,则调试通常会更加容易。有没有办法做到这一点?

考虑一些情况,例如将nil深深地传递给不期望它的库代码,或者两个字符串具有不兼容的编码并且一些例程试图连接它们

1 个答案:

答案 0 :(得分:2)

使用backtracer gem可以使用1.8.6。

1.9稍微破坏了回调,但是还不兼容。如果需要,我也许可以让它工作。

您可以使用类似委托的内容并查看单个对象的参数:

class A
  def go a, b
  end
end

class A2

  def initialize *args
    @delegate = A.new *args
  end

  def method_missing meth, *args
    p "got call to #{meth}", args.join(', ')
    @delegate.send(meth,*args)
  end

end

输出

"in go2"
"got call to go"
"3, 4"