1. A method in a computing system of augmenting a multithreaded application to provide deterministic execution of the multithreaded application on a multiprocessing system, the method comprising: accessing multithreaded application code specifying two or more threads of execution; and automatically inserting synchronization code into the multithreaded application code capable of causing the two or more threads to each execute in a deterministic order operations that are capable of affecting a state accessible by at least one other of the two or more threads when the multithreaded application code is executed.