Patent ID: 8327336

Claim:
A computer implemented method for debugging a multithreaded program, comprising: receiving a first request to execute a current line of code for a first thread of the multithreaded program actively being debugged by a debugging application, wherein executing the current line of code requires access, by the first thread, to a shared resource shared by a plurality of threads of the multithreaded program, and wherein an execution of a second one of the plurality of threads is suspended by the debugging application; upon determining that a first debug timer did not expire during a previous execution of the current line of code, initiating a second debug timer for a predetermined time limit; upon determining that the first debug timer did expire during the previous execution of the current line of code, initiating the second debug timer for a reduced amount of time that is less than the predetermined time limit; initiating an execution of the current line of code by operation of one or more computer processors; and upon determining that the second debug timer has expired before the execution of the current line of code has completed: resuming the execution of the suspended second thread of the multithreaded program, and upon detecting that a lock on the shared resource has been released, completing the execution of the current line of code.