使用ftrace调试Linu内核第1部分计算机linuxUnix相关计算机linuxUnix相关.pdf
《使用ftrace调试Linu内核第1部分计算机linuxUnix相关计算机linuxUnix相关.pdf》由会员分享,可在线阅读,更多相关《使用ftrace调试Linu内核第1部分计算机linuxUnix相关计算机linuxUnix相关.pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ftrace 是内建于 Linux 内核的跟踪工具,从 2.6.27 开 始加入主流内核。使用 ftrace 可以调试或者分析内核中发生 的事情。ftrace 提供了不同的跟踪器,以用于不同的场合,比如跟踪内核函数调用、对上下文切换进行跟踪、查看中断 被关闭的时长、跟踪内核态中的延迟以及性能问题等。系统 开发人员可以使用 ftrace 对内核进行跟踪调试,以找到内核 中出现的问题的根源,方便对其进行修复。另外,对内核感 兴趣的读者还可以通过 ftrace 来观察内核中发生的活动,了 解内核的工作机制。让内核支持 ftrace 使用 ftrace,首先要 将其编译进内核。内核源码目录下的 ker
2、nel/trace/Makefile 文件给出了 ftrace 相关的编译选项。清单 1.ftrace 相关的 配置选项列表 CONFIG_FUNCTION_TRACER CONFIG_FUNCTION_GRAPH_TRACER CONFIG_CONTEXT_SWITCH_TRACER CONFIG_NOP_TRACER CONFIG_SCHED_TRACER.ftrace 相关的配置选项比较多,针对不同的跟踪器有各自 对应的配置选项。不同的选项有不同的依赖关系,内核源码 目录下的 kernel/trace/Kconfig 文件描述了这些依赖关系。读 者可以参考 Makefile 文件和 Ko
3、nfig 文件,然后选中自己所需要的跟踪器。通常在配置内核时,使用 make menuconfig 会更直观一些。以 2.6.33.1 版本的内核为例,要将 ftrace 编 译进内核,可以选中 Kernel hacking(图 1)下的 Tracers 菜单项(图 2)。图 1.Kernel hacking 图 2.Tracers 进入 Tracers 菜单下,可以看到内核支持的跟踪器列表。如图 3 所示,这里选中了所有的跟踪器,读者可以根据自己的需要 选中特定的跟踪器。图 3.内核支持的跟踪器列表这里要注 意,如果是在 32 位 x86 机器上,编译时不要选中 General setup
4、菜单项(图 4)下的 Optimize for size 选项(图 5),否则就无法看到图 3 中的 Kernel Function Graph Tracer 选 项。这是因为在 Konfig 文件中,针对 32 位 x86 机器,表 项 FUNCTION_GRAPH_TRACER 有一个特殊的依赖条件:depends on!X86_32|!CC_OPTIMIZE_FOR_SIZE 图 4.General setup 图 5.Optimize for sizeftrace 通过 debugfs 向 用户态提供了访问接口,所以还需要将 debugfs 编译进内 核。激活对 debugfs 的支持
5、,可以直接编辑内核配置文 件.config,设置 CONFIG_DEBUG_FS=y;或者在 make menuconfig 时到 Kernel hacking 菜单下选中对 debugfs 文 件系统的支持,如图 6 所示。图 6.debugfs 编译选项配置 完成后,编译安装新内核,然后启动到新内核。注意,激 活 ftrace 支持后,编译内核时会使用编译器的-pg 选项,这是在 kernel/trace/Makefile 文件中定义的,如清单 2 所 示。清单 2.命对我们来说非常重要有许多没有安全意识的人失去了这生命例如闯红灯下楼梯奔跑过马路不走人行道等等当然也有许多发生在我们美丽的校
6、园中下面就让我来为大家讲两个有关校园的安全引发的事吧在年月的某一天某校中学生何师怒气冲冲地骂了他一顿并打了他两个耳光恰好是打在何某的左耳上致使何某左耳失聪后来陈老师赔偿了该同学的医药费年月早晨点分沁源县第二中学组织全校初二初三个班的多名学生来到汾屯公路上跑操学生们跑到汾屯公路公里一般突然碾压过来在一片惊呼和惨叫声中学生们纷纷倒地东风带挂车扫倒一大片学生后撞断路边的大树又驶上公路斜横在路上才停了下来当场有人死亡人受伤其中岁的班主任老师姜华也在此次事故中丧生死亡学生中年文章来源网络激活编译选项-pg ifdef CONFIG_FUNCTION_TRACER ORIG_CFLAGS:=$(KBUIL
7、D_CFLAGS)KBUILD_CFLAGS=$(subst-pg,$(ORIG_CFLAGS)endif.使用-pg 选项会在编译得到的内核映像中加入大量的调 试信息。一般情况下,只是在开发测试阶段激活 ftrace 支持,以调试内核,修复 bug。最终用于发行版的内核则会关闭-pg选项,也就无法使用 ftrace。回页首通过 debugfs访问 ftraceftrace 通过 debugfs 向用户态提供访问接口。配置内核 时激活 debugfs 后会创建目录/sys/kernel/debug,debugfs 文件系统就是挂载到该目录。要挂载该目录,需要将如下内 容添加到/etc/fsta
8、b 文件:debugfs /sys/kernel/debug debugfs defaults 0 0 或者可以在运行 时挂mount-t debugfs nodev/sys/kernel/debug 激活内核对 ftrace 的支持后会在 debugfs 下创建一个 tracing 目录/sys/kernel/debug/tracing。该目录 下包含了 ftrace 的控制和输出文件,如图 7 所示。根据编 译内核时针对 ftrace 的设定不同,该目录下实际显示的文件 和目录与这里也会不同。图 7.tracing 目录下的文件回页首 ftrace 的数据文件/sys/kernel/deb
9、ug/trace 目录下文件和目录 命对我们来说非常重要有许多没有安全意识的人失去了这生命例如闯红灯下楼梯奔跑过马路不走人行道等等当然也有许多发生在我们美丽的校园中下面就让我来为大家讲两个有关校园的安全引发的事吧在年月的某一天某校中学生何师怒气冲冲地骂了他一顿并打了他两个耳光恰好是打在何某的左耳上致使何某左耳失聪后来陈老师赔偿了该同学的医药费年月早晨点分沁源县第二中学组织全校初二初三个班的多名学生来到汾屯公路上跑操学生们跑到汾屯公路公里一般突然碾压过来在一片惊呼和惨叫声中学生们纷纷倒地东风带挂车扫倒一大片学生后撞断路边的大树又驶上公路斜横在路上才停了下来当场有人死亡人受伤其中岁的班主任老师姜华
10、也在此次事故中丧生死亡学生中年文章来源网络比较多,有些是各种跟踪器共享使用的,有些是特定于某个 跟踪器使用的。在操作这些数据文件时,通常使用 echo 命 令来修改其值,也可以在程序中通过文件读写相关的函数来 操作这些文件的值。下面只对部分文件进行描述,读者可以 参考内核源码包中 Documentation/trace 目录下的文档以及 kernel/trace 下的源文件以了解其余文件的用途。README 文件提供了一个简短的使用说明,展示了 ftrace 的操作命令 序列。可以通过 cat 命令查看该文件以了解概要的操作流 程。current_tracer 用于设置或显示当前使用的跟踪器;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 ftrace 调试 Linu 内核 部分 计算机 linuxUnix 相关
链接地址:https://www.taowenge.com/p-95896585.html
限制150内