我想在內核啓動過程中使用ftrace function_graph
來跟蹤函數以瞭解它的功能,但在available_filter_functions
中不可用。如何使一個linux內核函數可用於ftrace function_graph tracer?
我試圖用EXPORT_SYMBOL()
導出它,猜測它會使它可用,但事實並非如此。
您有解決方案嗎?
有關信息,我想跟蹤的功能是Android內核3.4中的persistent_ram_init_ringbuffer
和persistent_ram_early_init
。
我通過文檔閱讀,但什麼也沒發現這個和grep沒有幫助更多...
感謝
從我對Ftrace的理解中,函數的動態追蹤依賴於每個內核函數開始時的mcount函數調用。如果您感興趣的功能沒有可用的過濾器可能不會顯示。你有沒有考慮過不使用動態跟蹤?它可能會產生更好的結果。 – 2013-03-11 20:32:56
EXPORT_SYMBOL似乎與解決GPL /非GPL許可問題的內核模塊加載器有關,而不是Ftrace。 – bazza 2013-03-15 07:45:35
當你列出available_filter_functions什麼都得到列出?從編譯內核的CONFIG_FUNCTION_TRACER(和所有其他ftrace gubbins)開啓內核函數入口/出口跟蹤時,我可以看出,通過設置gcc命令行上的選項來實現。這些選項使gcc爲編譯的每個函數發出一個特定的函數調用。如果我理解了正確的話,這意味着任何linux內核函數都應該被ftrace自動捕獲。這導致我想知道你的內核中是否有任何東西可以追蹤。 – bazza 2013-03-15 07:52:07