tinyIns_note
tinyIns_note
IvoripuionTinyInst建立在自定义调试器之上。调试器通过监视目标进程的事件,例如加载模块、命中断点、引发异常等,实现对目标程序的完全访问和控制,进而实现插桩和覆盖率收集等功能。如果指定了目标方法,调试器还会实现断点和持久性。
TinyInst支持主流的三种代码覆盖率的统计:
- 基本块覆盖:计算运行时达到的基本块的数量。
- 边覆盖:计算运行时命中的边。
- 比较覆盖:计算CMP指令中命中的字节数。
TinyInst的插桩的简单流程如下:
graph TB subgraph Target_Process A[目标 Module] --> B(Debugger) B --创建运行空间--> C[插桩] end
TinyInst里比较关键的模块:通过debugger attach目标模块(Debugger)、对目标模块的执行进行控制以及插桩(TinyInst)、目标模块执行的覆盖率统计(LiteCov)。
graph TB subgraph TinyInst A[LiteCov] --继承--> B(TinyInst) B --继承--> C[Debugger] end