我有一个 JIT。我设置了一个观察点(watch
- 所以它应该只在写入时触发)到一个函数(全部)的jitted代码,如this answer中所示。我提供--vgdb=full
给 valgrind,这意味着必须检测所有指令,并且我应该看到执行在停止发生的位置准确停止。
然而,观察点在被观察的函数中间触发了几次。我注意到执行停止的指令是基本的块入口点(它们都遵循 ajump
或 acall
或者它是我函数的第一条指令)。
在观察点触发时,我看不到对观察内存的实际写入。那么 valgrind 是否认为执行此内存(其中一些)是一次写入?或者是其他一些 valgrind 的怪事,还是只是我?
请说清楚。
我的 valgrind 版本是 3.10.0.SVN,gdb 是 7.7.1(Ubuntu 7.7.1-0ubuntu5~14.04.2)。