Ruby:如何打印调用跟踪的函数? 当我使用C++时,有一个方便的宏,我可以在每个函数的开头添加,以打印被调用函数的信息,也可以适当的缩进(见下面的例子)。我想知道Ruby中是否有类似的工具。非常感谢 int A (int a, int b) { TRACE("%d", a); B(b); ... } int B (int b) { TRACE("%d", b); ... }

Ruby:如何打印调用跟踪的函数? 当我使用C++时,有一个方便的宏,我可以在每个函数的开头添加,以打印被调用函数的信息,也可以适当的缩进(见下面的例子)。我想知道Ruby中是否有类似的工具。非常感谢 int A (int a, int b) { TRACE("%d", a); B(b); ... } int B (int b) { TRACE("%d", b); ... },ruby,Ruby,运行时输出 ==> A(a) ====> B(b) ... 我相信您正在寻找的是p功能: 这将打印有关对象a p a 另一个很好的工具是inspect方法 a.inspect 是的,有。它叫 该方法返回当前执行堆栈—一个数组,其中包含“method”中格式为file:line或file:line:in的字符串 为了更好地格式化,可以使用pp而不是p打印堆栈 require 'pp' def foo pp caller # ... end 太好了,来电者太好了!谢谢。p

运行时输出

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

我相信您正在寻找的是
p
功能:

这将打印有关对象
a

p a
另一个很好的工具是
inspect
方法

a.inspect

是的,有。它叫

该方法返回当前执行堆栈—一个数组,其中包含“method”中格式为file:line或file:line:in的字符串

为了更好地格式化,可以使用
pp
而不是
p
打印堆栈

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

太好了,来电者太好了!谢谢。
p
还返回argument对象,因此您可以像检查
a.inspect
一样检查它,比如您正在记录它。但也有输出到标准输出。
require 'pp'
def foo
  pp caller
  # ...
end