如何使用ftrace

基本使用

1. 编译内核

ref:http://www.omappedia.org/wiki/Installing_and_Using_Ftrace
===================================================
Kernel configuration & Re-build

Kernel Hacking -> Tracers -> FUNCTION_TRACER
Kernel Hacking -> Tracers -> FUNCTION_GRAPH_TRACER (if possible)
Kernel Hacking -> Tracers -> STACK_TRACER  //  Trace max stack
Kernel Hacking -> Tracers -> DYNAMIC_FTRACE // enable/disable ftrace tracepoints dynamically

2. mount debugfs

mount -t debugfs nodev /sys/kernel/debug

3. 选择ftrace

echo function > /sys/kernel/debug/tracing/current_tracer

cat /sys/kernel/debug/tracing/available_tracers 可以显示可用的tracer

blk mmiotrace function_graph wakeup_rt wakeup function nop

现在有这些种类的trace。

ftrace主要用来观察函数调用情况。

4. 选择需要trace的函数

echo func_name > set_ftrace_filter

echo ‘:mod:e1000e‘ > set_ftrace_filter

追踪e1000e模块中的函数

5. 启动/关闭 trace

echo 1 > tracing_on

echo 0 > tracing_on

6. 输出

在文件 /sys/kernel/debug/tracing/trace中, 这个是静态的。

/sys/kernel/debug/tracing/trace_pipe 是动态的,数据读过后就不会再显示。且会block。

7. 输出格式

输出的格式可以在trace_options文件中,做些小调整。

cat trace_options 可以显示所有能做调整的选项。

echo noprint-parent > trace_options

就不会显示谁调用了该函数

echo sym-offset > trace_options

除了显示函数的名字,还会显示函数的offset

实例操作

1. function 的例子

从代码中看到有 dev_activate() 和 dev_deactivate() 分别在链路开启和断开时候被调用。

不过不确定是不是这样,之前的话需要在代码中加上printk,编译,换新的内核才能看到效果。

现在用ftrace来试试

echo function > current_tracer

echo dev_activate > set_ftrace_filter

echo dev_deactivate >> set_ftrace_filter

echo 1 > tracing_on

然后插拔网线,可以看到这两个函数确实被调用到。

2. function_graph 的例子

echo function_graph > current_tracer

echo dev_activate > set_graph_function

echo dev_deactivate >> set_graph_function

echo 3 > max_graph_depth

echo 1 > tracing_on

好了,这样可以看到一些函数调用过程。

时间: 2024-10-13 05:22:38

如何使用ftrace的相关文章

ftrace 详解

http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace/ http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace1/ http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace2/index.html http://www.ibm.com/developerworks/cn/linux/l-cn-ftrace3/index.html htt

ftrace

https://www.kernel.org/doc/Documentation/trace/ftrace.txt http://www.brendangregg.com/blog/2015-07-08/choosing-a-linux-tracer.html http://www.slideshare.net/brendangregg/linux-performance-analysis-new-tools-and-old-secrets https://en.wikipedia.org/wi

ftrace简单使用

一.使用ftrace: 内核版本较高的Linux系统已默认有ftrace功能. 1.相关设置 首先获取root权限: Su 输入密码 再切换目录:cd /sys/kernel/debug/ftracing 设置追踪器:echo function/function_graph >current_tracer 设置函数过滤器:echo sys_wait4 >set_ftrace_filter 开启追踪器:echo 1 >tracing_on 2.执行相关程序(此次实验使用了两个与waitpi

使用ftrace学习linux内核函数调用

http://www.cnblogs.com/pengdonglin137/articles/4752082.html 转载: http://blog.csdn.net/ronliu/article/details/6446251 linux中大量使用函数指针钩子,导致阅读代码困难.比如想知道一个函数的调用路径,那么就只能用source insight之类的工具看代码了.有没有办法可以迅速获得调用关系的整体印象?ftrace是内核提供的一种调试工具,可以对内核中发生的事情进行跟 踪.比如函数的调

ftrace.txt

ftrace - 函数跟踪器                ======================== Copyright 2008 Red Hat Inc.   Author:   Steven Rostedt <[email protected]>  License:   The GNU Free Documentation License, Version 1.2               (dual licensed under the GPL v2)Reviewers:  

ftrace的使用【转】

转自:http://blog.csdn.net/cybertan/article/details/8258394 This article explains how to set up ftrace and be able to understand how to trace functions. It should be useful for current kernel developers and device driver developers who want to debug ker

ftrace用法

ftrace官方文档在kernel/Documentation/trace/ftrace.txt文件中. 使用ftrace接口之前,如果系统没有自动挂载debugfs文件系统,则要先手动挂载. # mount -t debugfs nodev /sys/kernel/debug ftracer的目录为/sys/kernel/debug/tracing,下面介绍这个目录下的常用文件: tracing_on,启用/禁用向追踪缓冲区写入功能.1为启用,0为禁用. available_tracers,当

ftrace简介

ftrace 的作用是帮助开发人员了解 Linux 内核的运行时行为,以便进行故障调试或性能分析. 最早 ftrace 是一个 function tracer,仅能够记录内核的函数调用流程.如今 ftrace 已经成为一个 framework,采用 plugin 的方式支持开发人员添加更多种类的 trace 功能. Ftrace 由 RedHat 的 Steve Rostedt 负责维护.到 2.6.30 为止,已经支持的 tracer 包括: Function tracer和 Function

使用 ftrace 调试 Linux 内核,第1部分

ftrace 是 Linux 内核中提供的一种调试工具.使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用.本系列文章对 ftrace 进行了介绍,分为三部分.本文是第一部分,介绍了内核相关的编译选项.用户态访问 ftrace 的接口.ftrace 的数据文件,并对 ftrace 提供的跟踪器的用途进行了介绍,以使读者更好的了解和使用该工具. ftrace 是内建于 Linux 内核的跟踪工具,从 2.6.27 开始加入主流内核.使用 ftrace 可以