嵌入式Trace调试
说明
查看RK的文档,抄袭记录下
Linux Trace是⼀种⽤于抓取和分析系统运⾏时信息的⼯具。允许开发⼈员跟踪和分析系统的各种活动,以便深⼊了解系统的性能、⾏为和故障。下⾯是关于Linux Trace数据抓取的说明:
-
数据抓取范围:Linux Trace可以抓取各种级别的数据,包括系统级别、进程级别和内核级别的数据。可以选择抓取特定进程、线程或系统整体的数据,以满⾜您的分析需求。
-
数据抓取⽅法:Linux Trace提供了多种抓取⽅法,包括静态跟踪、动态跟踪和事件触发跟踪。可以根据需要选择合适的⽅法进⾏数据抓取。
-
抓取的数据类型:Linux Trace可以抓取各种类型的数据,如系统调⽤、函数调⽤、硬件事件、中断、进程状态、⽹络流量等。这些数据可以帮助您了解系统的运⾏状态、性能瓶颈和资源利⽤情况。
-
数据分析和可视化:抓取的数据可以通过专⻔的⼯具进⾏分析和可视化。可以使⽤Chrome浏览器进⾏可视化的分析。这些⼯具可以帮助识别系统瓶颈、优化性能,并提供可视化的结果。
-
性能分析和故障排查:通过抓取和分析Linux Trace数据,可以进⾏性能分析和故障排查。可以识别系统中的性能瓶颈,发现潜在的问题,并定位故障的根本原因。这有助于改进系统的性能和可靠性。
-
实时监控和调试:Linux Trace还可以⽤作实时监控和调试⼯具。您可以在系统运⾏时实时监视和分析各种活动,以便及时响应和调试问题。
配置开启Trace
kernel打开如下配置:
CONFIG_IRQSOFF_TRACER=y
CONFIG_PREEMPT_TRACER=y
CONFIG_SCHED_TRACER=y
调试步骤
Trace抓取脚本
如下为Trace抓取脚本,命名为captrue.sh,⽰例中抓取10s的数据:
#!/bin/sh
# 禁⽤调度程序中的 NO_TTWU_QUEUE 功能
echo NO_TTWU_QUEUE > /sys/kernel/debug/sched_features
# 进⼊事件跟踪的⽬录
cd /sys/kernel/debug/tracing/events
# 启⽤特定的事件类别进⾏跟踪
echo 0 > sched/enable # 调度事件
echo 1 > sched/sched_switch/enable # 调度切换事件
echo 1 > sched/sched_wakeup/enable # 调度唤醒事件
echo 1 > block/enable # 块设备事件
echo 1 > scsi/enable # SCSI 事件
echo 1 > irq/enable # 中断事件
echo 1 > workqueue/enable # ⼯作队列事件
echo 1 > power/enable # 电源事件
# 返回跟踪⽬录
cd ..
# 设置跟踪的缓冲区⼤小(以千字节为单位)
echo 96000 > buffer_size_kb
# 启⽤进程组 ID 的记录
echo 1 > options/record-tgid
# 将跟踪时钟设置为 'global'
echo global > trace_clock
# 开始跟踪
echo 1 > tracing_on
# 等待 10 秒钟以捕获数据
sleep 10
# 停⽌跟踪
echo 0 > tracing_on
# 将捕获的跟踪保存到指定的⽂件中
cat trace > $1
命令执⾏⽰例:
# 将trace抓取存放⾄/data/trace.txt
./captrue.sh /data/trace.txt
Trace⽂件查看⽅法
打开Chrome 浏览器并输⼊⽹址"chrome://tracing/",然后按Enter 键。这将打开Chrome 浏览器的跟踪⻚⾯。

点击Load导⼊输出的 trace.txt.

Trace可视化操作说明
在Chrome 浏览器的跟踪⻚⾯,W、A、S、D 键通常⽤于在时间轴上进⾏导航和缩放。以下是相应的快捷键说明:
W:时间轴放⼤。
A:向左滚动时间轴。
S:时间轴缩小。
D:向右滚动时间轴。
<:向左移动任务(移动过程被选中的任务会⾼亮显⽰)。
>:向右移动任务(移动过程被选中的任务会⾼亮显⽰)。
实践
还挺有意思

本文来自博客园,作者:杨旭0324,转载请注明原文链接:https://www.cnblogs.com/allalonewithyou/p/19337547,个人邮箱:yaonie4444@foxmail.com

浙公网安备 33010602011771号