Behave or be watched: debugging with behavioral watchpoints
How to shadow every byte of memory used by a program