1. A computer-implemented method for providing a user with a serial debugging experience for a program that executes in a non-serial fashion on one or more computing devices, comprising the steps of: (a) presenting an interface to the user, wherein said interface comprises a representation of the source code for the program and wherein the program comprises a plurality of functions; (b) receiving, from the user and via said interface, the selection of a plurality of breakpoints, wherein each of said plurality of breakpoints is within one of said plurality of functions; (c) building a virtual call stack utilizing said plurality of breakpoints and said plurality of functions; (d) executing, utilizing said virtual call stack, the object code of the program until one of said plurality of breakpoints is reached; (e) selecting a plurality of tasks; and (f) executing each of said plurality of tasks, wherein such execution is accomplished in a stepping manner and presented to the user via said interface.