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 a plurality of computing devices, comprising: presenting an interface to the user, wherein said interface comprises a representation of a source code for the program and wherein the program comprises a plurality of functions that are configured to be executed in a non-deterministic and parallel manner across a plurality of computing devices; receiving, from the user and via said interface, selection of at least one breakpoint within one of said plurality of functions; building a virtual call stack utilizing said breakpoint and said plurality of functions, said virtual stack representing a physical call stack while filtering out scheduling infrastructure to present a logical control flow of the program; executing, utilizing said virtual call stack, an object code of the program until the breakpoint is reached, said object code being derived from the source code; based on reaching said breakpoint, blocking the one of said plurality of functions; and based on reaching said breakpoint, and while blocking the one of said plurality of functions, executing at least one other of the plurality of functions that appears prior to the one of said plurality of functions in the logical control flow of the program.