[android驱动] Ftrace使用记录

Debugging the kernel using Ftrace - part 1 [LWN.net]

Debugging the kernel using Ftrace - part 2 [LWN.net]

背景:
    
    咱也新手学习一下,都是网上搜的,然后adb里操作一遍,博文偏向工具的操作与使用。

This first part will talk briefly about

1. setting up Ftrace, 

2. using the function tracer,

3. writing to the Ftrace buffer from within the kernel,

4. and various ways to stop the tracer when a problem is detected. 

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

第一篇的一些翻译与概括:

Ftrace依赖debugfs, 文件接口位置/sys/kernel/debug/, 使用Ftrace前在kernel的config文件里打开以下宏开关:

    CONFIG_FUNCTION_TRACER
    CONFIG_FUNCTION_GRAPH_TRACER
    CONFIG_STACK_TRACER
    CONFIG_DYNAMIC_FTRACE 

Ftrace最powerful的功能就是函数追踪。

配置了CONFIG_DYNAMIC_FTRACE 后,cat /sys/kernel/debug/tracing/current_tracer是NOP, 以保证系统以100%性能运行。

cat available_tracers 可以查看能够使用的tracer功能。使用功能就是用echo把功能写入current_tracer文件节点,如echo function_graph > /sys/kernel/debug/tracing/current_tracer.

然后说了以下trace_printk(),比较了printk和trace_printk().

1.printk是debug之王,但是在中断上下文,进程调度,网络中可能使系统性能降低或者出现锁。

2.printk是输出到控制台,trace_printk不会输出到控制台,而是输出到trace文件中(ring buffer),通过cat可以读取。

3.trace_printk只需0.1微妙,printk写到控制台可能需要几毫秒,trace_printk几乎不影响性能。

后面讲述了在adb中通过文件节点,打开trace和关闭trace,从文件系统里面的看就是:

trace_on;
执行或加载内核模块;
trace_off;

cat trace查看模块运行的函数调用。

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

第二篇主要是说在内核里面用函数搞,抓取函数调用堆栈,查看内核崩溃原因。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值