我有一个被调用超过一千次的函数,减慢了一切。但是,它是一个低级功能,并且不知道我的哪个高级功能正在削减和进行这些调用。我怎么能找到?
答案 0 :(得分:1)
如果低级函数是用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-ism。
如果低级函数不是用Ruby编写的,你可能需要在解释器本身上使用ruby-debug甚至gdb来获取堆栈跟踪。