block级trace命令研发原因和相关介绍:
1,在trace某些app的时候,发现里面的混淆代码很多都是可执行的,而且有很多没什么效果的大循环。从而 inst级 trace 的性能大大的 降低了。
2,考虑到 function 级 trace 的高效率。结合 function 级 trace 的高效率,以及 inst 级 trace 高代码完整性。决定从 block着手,弄一个 block 级 trace。
3,目前 trace 某app的大函数,效果还可以。
相关更新内容:
同时把 inst 级的 bug 修复了下。<a,函数结束位置的断点的修复;b,打印msg_send的相关信息,导致写文本出bug,暂时把这一块注释了。>
注 :trace某大型app,跑了35w+行… 基本达到预期
trace_b 输出如下:
大量的loop 都这样pass掉了:
注 :
1,loop 代码其实只跑了2次。第二次运行的时候,直接删掉循环中的断点。
2,任何循环都只跑了2次<block级的,不是逐条汇编跑的>
3,同样默认暂停其他所有线程。如果遇到线程同步锁的,需要第二次trace,trace的起始位置在跳出同步锁的位置。