我使用 Fedora 来演示下面的例子,但是它们应该在其他最新的 Linux 发行版上同样可以运行。
启用 ftrace
ftrace现在已经是内核中的一部分了,你不再需要事先安装它了。也就是说,如果你在使用最近的 Linux 系统,那么ftrace是已经启用了的。为了验证ftrace是否可用,运行mount命令并查找tracefs。如果你看到类似下面的输出,表示ftrace已经启用,你可以轻松地尝试本文中下面的例子。下面有些命令需要在 root 用户下使用(用sudo执行是不够的)。
# mount | grep tracefsnone on /sys/kernel/tracing type tracefs (rw,relatime,seclabel)
要想使用 ftrace,你首先需要进入上面mount命令中找到的特定目录中,在那个目录下运行文章中的其他命令。
# cd /sys/kernel/tracing
一般的工作流程
首先,你需要理解捕捉踪迹和获取输出的一般流程。如果你直接运行 ftrace,不会运行任何特定的ftrace命令。相反的,基本操作是通过标准 Linux 命令来写入或读取一些文件。
到目前为止,你一直在追踪内核中发生的一切。但是,它无法帮助你追踪与某个特定命令有关的事件。为了达到这个目的,你可以按需打开和关闭跟踪,并且在它们之间,运行我们选择的命令,这样你就不会在跟踪输出中得到额外的输出。你可以通过向 tracing_on写入1来启用跟踪,写0来关闭跟踪。
# cat tracing_on0# echo 1 > tracing_on# cat tracing_on1### Run some specific command that we wish to trace here #### echo 0 > tracing_on# cat tracing_on0