利用ftrace调试内核
来源:互联网 发布:淘宝客服旺旺号是多少 编辑:程序博客网 时间:2024/05/20 11:23
ftrace主要是用来帮助开发人员了解Linux内核的运行轨迹,以便进行故障调试或性能分析。它是在2.6.27内核中开始出现的,自此以后,不断有新的tracer加入,到2.6.30为止最少已经有10种tracer。具体的tracer可以参阅/Documentation/trace/ftrace.txt。
本文主要说明ftrace的使用方法:
要使用ftrace必须在内核中首先添加对其的支持,也就是要重新编译一个新的内核。
Kernel hacking
Tracers
Kernal Function Tracer
Kernal Function Graph Tracer
。。。。。。。
依次将这些选项编译进内核中。这样,在新编译的内核上,你就可以尽情的享用ftrace带给你的便利。这里要说明一下,ftrace是以debugfs为出口,读出内核信息的。而在debugfs配置到内核时,将会创建一个/sys/kernel/debug目录,我们所要查看的内核信息都要从该目录下获得。
首先,要挂载debugfs。在运行时使用如下命令进行挂载
sudo mount -t debugfs nodev /sys/kernel/debug/
也可以把它添加在/etc/fstab文件中。
接下来,为了便于访问,通过建立软链接,将/sys/kernel/debug目录链接/debug目录下,(2.6.30中已经有/debug目录,早一点内核可能没有),如果没有,可以手工创建。
wuting@wuting-desktop:~$ sudo ln -s /sys/kernel/debug/tracing/ /debug/
wuting@wuting-desktop:~$ ls /debug/
Tracing
用ls命令可以看到在tracing目录下有如下文件
wuting@wuting-desktop:~$ ls /debug/tracing
available_events events saved_cmdlines stack_max_size trace_stat
available_filter_functions failures set_event stack_trace tracing_cpumask
available_tracers options set_ftrace_filter trace tracing_enabled
buffer_size_kb per_cpu set_ftrace_notrace trace_marker tracing_max_latency
current_tracer printk_formats set_ftrace_pid trace_options tracing_on
dyn_ftrace_total_info README set_graph_function trace_pipe tracing_thresh
除目录(绿色)外,这里的文件都可以通过echo命令进行写入操作,用cat命令进行读操作。这样,我们就可以利用echo和cat对ftrace进行配置。
最后,举例说明ftrace的具体用法。
echo function_graph > /debug/tracing/current_tracer //配置使用Function graph tracer来跟踪函数调用。
echo 10000 > /debug/tracing/buffer_size_kb//配置ring buffer的大小为10000KB
echo 1 > /debug/tracing/tracing_enabled //使能trace
/*执行需要跟踪的程序,如ls,*/
ls -l
echo 0 > /debug/tracing/tracing_enabled //禁止trace
cat /debug/tracing/trace > trace.txt //读取跟踪信息,为了便于查看将其重定向到文件
打开trace.txt,可以看到,内核函数之间的调用关系,以图形化的形式显示在我们眼前。其中,第一列表示在那个CPU上执行的,第二列是函数执行所用的时间,加号(+)表示有延迟,第三列是函数之间的调用关系。
# tracer: function_graph
#
# CPU DURATION FUNCTION CALLS
# | | | | | | |
0) + 55.570 us | }
0) 0.675 us | strncpy();
0) + 58.825 us | }
0) + 61.605 us | }
0) 0.465 us | strcmp();
0) | kallsyms_lookup() {
0) | is_ksym_addr() {
0) 0.455 us | in_gate_area_no_task();
0) 1.375 us | }
0) | module_address_lookup() {
0) + 55.645 us | get_ksymbol();
0) 0.685 us | strncpy();
0) + 58.525 us | }
0) + 61.315 us | }
0) 0.465 us | strcmp();
...................
总结一下,ftrace的使用过程就是:
●选择一种tracer
●使能tracer
●执行需要trace的应用程序
●关闭ftrace
●查看trace文件
0
上一篇:Some interesting C problems
下一篇:vim multifile edit
相关热门文章
- Android之input系统流程
- 根文件系统制作的lib库必须添...
- AIO介绍
- Linux软件RAID技术
- Linux软件RAID技术
- linux 常见服务端口
- 什么是shell
- linux socket的bug??
- linux的线程是否受到了保护?...
- 一个适用于windows和linux的抓...
- shell将变量当命令执行问题【...
- 深入理解Linux网络技术内幕-设...
- 高性能网络I/O框架-netmap源码...
- 深入理解Linux网络技术内幕-...
- Linux下bin文件的安装
给主人留下些什么吧!~~
评论热议
- 利用ftrace调试内核
- Linux内核调试Ftrace
- 使用 ftrace 调试 Linux 内核
- 使用 ftrace 调试 Linux 内核
- 使用 ftrace 调试 Linux 内核
- 使用 ftrace 调试 Linux 内核
- 使用 ftrace 调试 Linux 内核
- 使用 ftrace 调试 Linux 内核
- 内核性能调试–ftrace
- 内核性能调试–ftrace
- Linux内核调试工具 ftrace
- 使用 ftrace 调试 Linux 内核(概述)
- 使用 ftrace 调试 Linux 内核(概述)
- Linux内核的ftrace调试接口
- 如何使用ftrace进行内核调试
- Linux内核调试工具 Ftrace 进阶使用手册
- 使用 ftrace 调试 Linux 内核 (一)
- 使用 ftrace 调试 Linux 内核 (二)
- 软件并行模型--多核系列之二
- 程序设计中多核的影响--多核系列之三
- QEMU - Running Debian in Debian
- c 语言中的宏,井号,可变参数
- Some interesting C problems
- 利用ftrace调试内核
- vim multifile edit
- vim diff two files
- Use clonezilla to clone and restore disk
- Bash check IP and port
- Linux 内核中的 GCC 特性(转)
- php快速学习之php的控制语句(有其他语言基础适用)
- android 休眠唤醒机制分析(三) — suspend
- Java 理论与实践: 并发集合类
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
镂空是什么意思
铝板镂空雕花厂家
江诗丹顿镂空机械表
批发镂空针织衫
镂空雕花隔断
镂空雕花板价格
镂空不锈钢屏风
装修镂空隔断
清乾隆粉彩镂空瓷瓶
室内镂空隔断
镂空手表哪个牌子好
沛纳海镂空机械表
双面镂空机械表
欧米茄镂空手表
百达翡丽镂空陀飞轮
欧米茄镂空机械表价格
欧式镂空电视背景墙
镂空开衫外套
镂空雕花装饰板
欧式镂空雕花隔断
天梭镂空机械表
镂空什么意思
餐厅镂空隔断
针织镂空开衫
蕾丝镂空内衣
阿玛尼镂空机械表
实木镂空雕花价格
蕾丝镂空长裙
百达翡丽镂空系列
镂空毛衣编织花样图解
欧米茄蝶飞镂空
镂空毛衣如何搭配
镂空吊带背心
百达翡丽 镂空
镇上
在镇上开什么店好
镇上开什么店比较好
镇上中学情侣教室在线播放
镇上开什么店
镇上开奶茶店怎么样
在镇上开正新鸡排