【Kernel ftrace】使用kernel ftrace追踪IRQ的例子

1.简介

近期遇到一个uart数据部分丢失的问题,比较怀疑在中断中,寄存器发生异常。

选择使用kernel自带的Trace工具追踪UART IRQ信号。

 

2.使用方法

追踪IRQ
irq:irq_handler_exit
irq:irq_handler_entry

proc/interrupts  //查看当前注册的IRQ,确认要追踪的IRQ号

cd /sys/kernel/debug/tracing/
echo irq_handler_exit > set_event    //追踪IRQ进入
echo irq_handler_entry >> set_event   //追踪IRQ出来
echo "irq != 4" > events/irq/irq_handler_entry/filter  //过滤掉过于频繁的IRQ信号
echo "irq != 4" > events/irq/irq_handler_exit/filter         //过滤掉过于频繁的IRQ信号
echo 4096 > buffer_size_kb             //设置buff size,单位为kb,因为irq信息比较多,因此选择较大buff

echo > trace
echo 1 > tracing_on

//echo "name != arch_timer" > events/irq/irq_handler_entry/filter
//echo "name != arch_timer" > events/irq/irq_handler_exit/filter

cat trace > /3rd_rw/trace.txt          //保存log到文件

 

3.创建kernel thread辅助debug

其中,使用trace_printk将log打印到trace buff中,可以和上面的irq log组合在一起,方便观察。

 

posted @ 2020-04-15 15:43  smilingsusu  阅读(1456)  评论(0编辑  收藏  举报