Patent ID: 8806449

Claim:
A computer-implemented method for a user to debug a program with a debugger, the method comprising the steps of: providing at least one processor; providing a memory coupled to the at least one processor; providing the program in the memory to be executed on a plurality of threads executed by the at least one processor, wherein the plurality of threads execute user code within the program and system code external to the program, wherein the system code performs services on behalf of the program; providing the debugger in the memory; the at least one processor executing the debugger, the debugger performing the steps of: executing the program; receiving a debugger event that specifies to halt execution of the program; analyzing the plurality of threads to determine whether any of the plurality of threads are currently executing the system code external to the program, immediately halting each of the plurality of threads that are executing user code within the program; and for each of the plurality of threads that are currently executing system code external to the program, delaying the halting of the thread by the debugger until at least one condition is satisfied.