kernel学习之ftrace环境搭设及使用(包括buildroot的使用)

本文详细介绍了如何搭建Ftrace调试环境,包括使用buildroot编译内核和根文件系统,以及将ext2转换为ext3。内容还涵盖了Ftrace的基本概念,如mcount函数,以及如何在QEMU中运行。文章展示了如何开启和关闭ftrace功能,使用ftrace_printk进行内核日志记录,并提供了用户空间读取和利用ftrace ring buffer的示例。
摘要由CSDN通过智能技术生成

Updated(2012/04/23):

刚看了elc2012的一篇关于使用ftrace调试性能问题的文章,也很不错
https://events.linuxfoundation.org/images/stories/pdf/lf_elc12_kobayashi.pdf

同时, 推荐下面这篇关于在ARM体系结构下使用Ftrace的文章
http://elinux.org/Ftrace_Function_Graph_ARM


以上支持ARM 的Ftrace的patch在commit:376cfa8730c08c0394d0aa1d4a80fd8c9971f323 中引入了kernel的mainline.


-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Ftrace是用来帮助调试kernel,了解kernel中的运行机制及performance相关问题而设计的基于debugfs的kernel内部的trace机制.


Ftrace的一些前提知识:

  1. mcount, 当gcc的-gp参数启用时,根据不同的系统及其compiler相关,会使得每次函数调用之前,先执行这个叫做mcount的操作.它由对应的profiling library提供.
    参见:http://sourceware.org/binutils/docs/gprof/Implementation.html

搭建Ftrace调试环境

  1. 使用build root编译内核及相应的rootfs
    这里需要注意, build root只支持ext2(目前还不支持ext3,ext4), 所以编译好的output/images/下的rootfs是ext2的.
    如果用比较新的内核,编出的bzImage中不支持ext2的rootfs引导, 所以会出错.
    这里就需要把rootfs.ext2的rootfs image转换成ext3的, 如下:
        sudo dd if=/dev/zero of=disk.image bs=1024k count=4096
        mkfs.ext3 -F -b 1024 disk.image 4096
        sudo mount -o loop d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值