基于插桩的跟踪技术详解
1. 引言
在软件开发尤其是嵌入式软件开发中,对代码运行情况进行跟踪和分析至关重要。基于插桩的跟踪技术为我们提供了一种有效的手段来深入了解代码的运行状态、调度情况以及数据流动等信息。
2. 基于插桩的跟踪技术概述
硬件级的指令或流程跟踪通常针对代码的底层部分。而基于软件插桩实现的跟踪,在粒度上也能细化到单个机器指令,但更侧重于调度层面,任务和中断服务程序(ISR)的可视化在此起着决定性作用。
人类大脑经过数百万年的进化,具备在短时间内处理大量视觉信息的能力。将复杂的运行时情况转化为图形表示,能让我们的大脑快速捕捉到不规则性、重复性、工作负载、分布以及优化潜力等信息。相比之下,非可视化形式的数据,如跟踪内存中未经处理的数字列,几乎毫无用处。
3. 基本功能和工作流程
与运行时测量类似,被研究的软件会补充额外的跟踪软件来记录感兴趣的事件,主要有以下两种方式:
3.1 带外部跟踪缓冲区的基于软件的跟踪
这种方法虽不完全是纯软件解决方案,但跟踪数据的采集仍基于插桩。与外部跟踪硬件的连接可通过各种接口实现,只要这些接口能提供足够的带宽,常见的接口有端口引脚、SPI 和以太网。
时间戳的生成有两种方式:
- 由跟踪软件自身生成并与其他信息一起传输到外部,这种情况下插桩带来的开销会更高。
- 由外部硬件生成,但事件发生与将其记录到外部跟踪内存之间的时间可变,会影响时间戳的准确性。
对于一些系统,可在无特殊硬件的情况下直接将跟踪数据读入 PC 并存储,但大多数项目因 PC 缺乏实时能力,若嵌入式系统中无
超级会员免费看
订阅专栏 解锁全文
30

被折叠的 条评论
为什么被折叠?



