2013-12-16 2 views
3

Когда я использую C++, есть удобный макрос, который я могу добавить в начале каждой функции для печати информации вызываемой функции, а также с правильным отступом (см. Пример ниже). Интересно, есть ли аналогичный инструмент в Ruby. Большое спасибо.Ruby: как распечатать функцию вызова trace?

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

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

выход выполнения,

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

ответ

3

Да, есть. Это называется caller.

def foo 
    p caller 
    # ... 
end 

Метод возвращает текущий стек выполнения - массив, содержащий строки в файле формы: строка или файл: строка: в `метод».

Для лучшего форматирования вы можете использовать pp вместо p, чтобы распечатать стек.

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

Отлично, звонок отличный! Благодарю. – user180574

1

Я считаю, что вы ищете является p функция:

Это будет печатать информацию относительно объекта a

p a 

другой Хорошим инструментом является inspect.

a.inspect 
+0

'p' также возвращает объект аргумента, поэтому вы могли бы хотеть, чтобы вы использовали' a.inspect', например, если вы его регистрировали. Но также выводят вывод в STDOUT. – vgoff

Смежные вопросы