1. A system for debugging computer software comprising: an event monitor; an event collector coupled to the event monitor; an event player coupled to the event collector; and a concurrency error detector coupled to the event player; wherein the computer software being debugged comprises a plurality of events; the event monitor is arranged to execute the computer software being debugged in a kernel space portion of system memory; the event collector, the event player, and the concurrency error detector are each arranged to execute in a user space portion of system memory; and the event player is arranged to replay each of the plurality of events in the user space portion of system memory.