1. A method for augmenting a compiled software routine in execution, the compiled software routine being instrumented to generate an event at an augmentation point defined therein, the method comprising: storing application data generated by the compiled software routine in a memory; suspending execution of the compiled software routine on generation of the event; receiving the event at a second software routine; augmenting the compiled software routine by executing the software instructions included in the second software routine; modifying, by the second software routine, the application data generated by the compiled software routine and stored in the memory; generating, by the second software routine, a second event for communication to the compiled software routine; and resuming execution of the compiled software routine on receipt of the second event, wherein the second software routine executes synchronously with the compiled software routine.