硬件跟踪技术:原理、应用与挑战
1. 基本功能与工作流程
1.1 程序流分析的指令跟踪
硬件跟踪的一种重要方式是指令跟踪,其目标是追踪每一条已执行的命令或指令。硬件跟踪的基本设置有其特定模式。在程序执行过程中,若使用硬件跟踪工具观察代码,像图中代码片段里,红色框出的是基本块,每个基本块以跳转或函数调用结束。除处理中断或异常外,指令顺序执行的中断被称为分支,各种跳转和调用(条件或无条件)都属于分支。
例如,当代码执行到 jeq d15,#2,.L10 指令时,如果寄存器 D15 的值为 2,就会触发跳转到 .L10 标签处,随后 .L10 处的命令会依次执行,最后一个是调用 CAN_PreWrite 函数。
若处理器上的跟踪单元为每条执行的命令(蓝色箭头所示)在跟踪内存中做记录(包括时间戳),会导致极高的跟踪带宽需求。实际上,重建程序流只需跟踪所采取的条件分支即可,其间的所有指令可以通过插值法重建,其执行时间和时间戳也能近似得出。具体的跟踪逻辑因处理器而异,但共同点是只在跟踪内存中记录少数关键事件,大部分执行指令通过插值重建。最终能得到观察到的程序流图像、所有处理过的机器指令列表以及每条指令的时间戳。若有符号信息和源文件,还能在源代码中跟踪程序流。
1.2 数据跟踪
数据跟踪是对特定地址或地址范围的写访问进行监控。当对监控的地址或区域进行写访问时,该事件会与数据值一起记录到跟踪内存中,这样就能随时间重建数据值的变化。
超级会员免费看
订阅专栏 解锁全文

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



