2011-04-09 52 views
1

我嘗試過這些,但他們產生「空」輸出文件:如何使用ftrace獲取系統調用調用的內核調用圖?

trace-cmd record -p function_graph -g munmap -F ls 
trace-cmd record -p function_graph -g sys_enter_munmap -F ls 
trace-cmd record -p function_graph -g sys_enter -F ls 
+0

你確定ftrace已啓用嗎? – gby 2011-04-09 17:49:01

+0

是的,它工作,如果我只是告訴它轉儲所有事件。 – 2011-04-09 19:09:48

+0

嗯,我試過這些,他們在這裏工作(Ubuntu的2.6.35-28,trace-cmd版本1.0.3),所以我猜想問題在於你的特定內核或ftrace-cmd版本和/或配置。 – gby 2011-04-10 06:58:11

回答

2

首先,你需要得到函數名稱權 - 例如用於跟蹤open系統調用的函數名稱是sys_open

要做到這一點「正確」的方式,有必要在內核中支持function_graph。在x86架構this depends on CC_OPTIMIZE_FOR_SIZE being disabled上,但在x86_64上沒有。

在我來說,我沒有刻意去編譯一個定製的內核禁用CC_OPTIMIZE_FOR_SIZE,我只是做了

trace-cmd record -p function --func-stack 

和包括看起來像他們可能會通過增加幾個-l選項調用各種功能。這足以找出我想知道的內容。