1. A method of instrumentation for a software instruction, the method comprising: identifying a location in the instruction to insert a probe, wherein the probe is a breakpoint; replacing the instruction with the probe by copying the instruction to a predefined location; executing the instruction in a kernel space; generating a first exception upon encountering the probe and calling a first exception handler, wherein the first exception handler is configured to call an instrumentation routine; generating a second exception when the instrumentation routine encounters an error and calling a second exception handler; and recovering from the first and second exceptions and returning to a sane state to continue normal execution of the instruction.