1. A method comprising: running a debugging tool in regard to a program which is undergoing debugging, the program supporting multi-threaded operation; presenting an option to a user via the debugging tool with respect to a program instruction in a first thread of the program, the program instruction for putting an item of data into a queue at a first memory address; responsive to the user exercising the option, setting conditional breakpoints for a plurality of program instructions for getting the item of data from the queue, the plurality of program instructions being in a second thread of the program, the second thread being different from the first thread; executing the program; responsive to reaching a conditional breakpoint during execution, identifying if the program instruction for the conditional breakpoint includes a second memory address that matches the first memory address; and if the program instruction for the conditional breakpoint includes the second memory address, stopping execution of the program at the identified program instruction in the second thread; or if the program instruction for the conditional breakpoint does not include the second memory address, continuing to execute the program until reaching a program instruction for another conditional breakpoint.