Re: [問題] kernel trace code 方法

作者: clampsakura (妖應封光)   2016-05-20 01:15:12
※ 引述《shihyu (shihyu)》之銘言:
: 我想研究某段內核功能運作流程
: kernel 程式常常不是 function pointer 不然就是註冊或是中斷流程跑到很遠地方
: 用 printk 埋log太多有時候會讓kernel 掛掉
: 不知道大家有什麼好方法可以很方便分析出一個功能函數流程?
: 我有找到ftrace 好像可以但我不確定, 有人是過嗎?
: 目前是在 raspberry pi 練習
: 謝謝
RASPBERRY PI可以google ARM PMU (應該有支援)
網路上找一下 Streamline. 不過這有license server.
不知道有沒有software可以撈出gator dameon傳出的資料
其實這種東西也沒那麼好用 因為都要load symbols 通常很慢
裏頭的 call path可以看出呼叫call 的函數(應該沒有辦法看順序
因為這東西主要是performance counting,但可以大略看出呼叫到那些)
開的kernel config大概就是 CONFIG_PROFILING, CONFIG_TRACING
, CONFIG_GENERIC_TRACER..etc
其實如果就function 呼叫而言, 除了function pointer
kernel內就是work queue, timer lists等entry是註冊呼叫
時機到了就會呼叫到 , 這些呼叫才是你會討厭的東西
timer 有時會更改喚醒時間, work queue則是看你前面有多少個work queue jobs
這種不確定性的呼叫才是不好理解的(如同windows 上的DPC觀念)
作者: awe31402 (a-we)   2016-05-22 13:32:00
個人偏好加 dump_stack();

Links booklink

Contact Us: admin [ a t ] ucptt.com