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主義。
如果低級函數不是用Ruby編寫的,您可能需要在解釋器本身上使用ruby-debug甚至gdb來獲取堆棧跟蹤。
謝謝!我這樣做了,它給我看了下面的錯誤。任何想法出了什麼問題? 「期望/Users/mingyeow/mrtweet/lib/formatter/user_formatter.rb來定義Formatter :: UserFormatter」 – 2010-05-19 02:02:53
您可能重新打開了該類錯誤?沒有看到所有的代碼,我不能確定 – x1a4 2010-05-19 08:02:58