Выяснение, какая функция более высокого уровня делает много вызовов низкого уровня - PullRequest
1 голос
/ 19 мая 2010

У меня есть функция, которая вызывается более тысячи раз, все замедляется. Тем не менее, это функция низкого уровня, и я не знаю, какая из моих функций высокого уровня блокирует и выполняет эти вызовы. Как я могу узнать?

1 Ответ

1 голос
/ 19 мая 2010

Если функция низкого уровня написана на Ruby, заново откройте ее класс и используйте alias_method_chain:

class TheClass
  def low_level_with_debug_output
    puts "I am being called by #{caller.first.inspect}"
    low_level_without_debug_output
  end

  alias_method_chain :low_level, :debug_output
end

alias_method_chain - это Rails-изм.

Если низкоуровневая функция не написана на Ruby, вам может понадобиться вместо этого использовать ruby-debug или даже gdb на самом интерпретаторе, чтобы получить трассировку стека.

...