Ruby:如何打印函数调用跟踪?

时间:2013-12-16 23:49:50

标签: ruby

当我使用C ++时,我可以在每个函数的开头添加一个方便的宏来打印被调用函数的信息,也可以使用适当的缩进(参见下面的示例)。我想知道Ruby中是否有类似的工具。非常感谢。

int A (int a, int b)
{
  TRACE("%d", a);
  B(b);
  ...
}

int B (int b)
{
  TRACE("%d", b);
  ...
}

运行时输出,

==> A(a)
====> B(b)
...

2 个答案:

答案 0 :(得分:3)

是的,有。它被称为caller

def foo
  p caller
  # ...
end

该方法返回当前执行堆栈 - 一个包含表单文件中的字符串的数组:line或file:line:in`method'。

为了更好地格式化,您可以使用pp代替p来打印堆栈。

require 'pp'
def foo
  pp caller
  # ...
end

答案 1 :(得分:1)

我相信你要找的是p函数:

这将打印有关对象a

的信息
p a

另一个不错的工具是inspect方法。

a.inspect