相信很多读者在学习或者工作过程中,往往会遇到这样的问题。需要分析某个用户态程序的性能或者是分析某个用户态程序实现的原理(这里一般指代码量较大或使用到的内核调用较为复杂的工程),一般需要分析程序的原因有这些,要学习程序的实现原理以及内核中的实现过程或是首先查看函数在底层的调用关系、与其他平台使用的性能相比过差分析其原因、需要改进该程序或重新实现等。
1.1、实现途径起初各位小伙伴需要分析源代码时往往会通过“函数插桩”的方法来分析代码的执行流程,当然这种方法在代码量较小、调用层级不深的情况下使用起来方便得多,但是要面对到Linux内核源码的时候会显得有些束手无策,其原因可能因为不知从何找起,或者调用层级很深以及重复名字的函数很多不知该在何处插桩导致使用该方法很难达到我们分析的目的。([注]:当然ftrace也有这样的追踪方法)
2、工具的引入——Linux ftraceLinux ftrace是内核提供给开发者和设计者的一个内部跟踪器,可以帮助开发者们搞清楚Linux Kernel中发生的调用关系以及正在发生的行为,同时可以用来分析或调试发生在内核空间的延时和性能问题。
由于ftrace提供了包含ringbuffer、tracefs等一套便捷的框架,因此各种trace也基于此在ftrace上实现出自己的功能,现如今<



