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