1. A method of monitoring, the method comprising: determining whether a currently executing instruction changes a current data state in a central processing unit; writing the current data state to a buffer of the central processing unit only when the currently executing instruction is configured to overwrite the current data state; receiving notification of a buffer overflow flag being set for the buffer from an operating system kernel; and writing at least one data state from the buffer to a separate memory space to form an execution log in response to the setting of the buffer overflow flag.