Queue debugging using stored backtrace information
First Claim
1. A method comprising:
- identifying a task to be enqueued for asynchronous execution as a separate thread during runtime of a program;
upon enqueuing the task in an execution queue, capturing pre-queue stack trace information associated with the task, wherein stack trace information comprises debugging information that provides a backtrace to at least one portion of a program that caused the task to become enqueued;
associating the pre-queue stack trace information with the task;
removing the task from the execution queue for execution, wherein the execution is associated with current stack trace information separate from the pre-queue stack trace information;
upon detecting an event associated with executing the task, merging the pre-queue stack trace information with the current stack trace information to yield a merged stack trace; and
if the event is not detected upon completion of the execution of the task, removing the pre-queue stack trace information and the current stack trace information.
1 Assignment
0 Petitions
Accused Products
Abstract
When queuing work items for asynchronous execution, the approaches set forth herein enable a debugger to provide more meaningful and complete stack trace information for enqueued work items. An example system identifies a work item to be enqueued for asynchronous execution as a separate thread during runtime of a program. Upon enqueuing the work item in an execution queue, the system captures pre-queue stack trace information associated with the work item, and associates the pre-queue stack trace information with the work item. The system removes the work item from the execution queue for execution, wherein the execution is associated with current stack trace information separate from the pre-queue stack trace information. Upon detecting an event associated with executing the work item, the system merges the pre-queue stack trace information with the current stack trace information to yield a merged stack trace.
9 Citations
27 Claims
-
1. A method comprising:
-
identifying a task to be enqueued for asynchronous execution as a separate thread during runtime of a program; upon enqueuing the task in an execution queue, capturing pre-queue stack trace information associated with the task, wherein stack trace information comprises debugging information that provides a backtrace to at least one portion of a program that caused the task to become enqueued; associating the pre-queue stack trace information with the task; removing the task from the execution queue for execution, wherein the execution is associated with current stack trace information separate from the pre-queue stack trace information; upon detecting an event associated with executing the task, merging the pre-queue stack trace information with the current stack trace information to yield a merged stack trace; and if the event is not detected upon completion of the execution of the task, removing the pre-queue stack trace information and the current stack trace information. - View Dependent Claims (2, 3, 4, 5, 6, 26, 27)
-
-
7. A system comprising:
-
a processor; and a computer-readable memory device storing instructions which, when executed by the processor, cause the processor to perform operations comprising; upon enqueuing a process in a queue for later asynchronous execution, storing in a memory pre-queue stack trace information associated with the process, wherein stack trace information comprises debugging information that provides a backtrace to at least one portion of a program that caused the process to become enqueued; upon dequeuing the process from the queue for execution, identifying postqueue stack trace information associated with the process; and merging the pre-queue stack trace information with the post-queue stack trace information to yield a merged stack trace for the process. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory computer-readable storage device having stored therein instructions which, when executed by a processing device, cause the processing device to perform operations comprising:
-
enqueuing, via a debugger, a thread in an execution queue for asynchronous execution; associating, via a hook function, pre-queue stack trace information with the thread, wherein stack trace information comprises debugging information that provides a backtrace to at least one portion of a program that caused the thread to become enqueued; removing the thread from the execution queue for execution; and merging the pre-queue stack trace information with current stack trace information to yield a merged stack trace, wherein the current stack trace information is separate from the pre-queue stack trace information prior to merging. - View Dependent Claims (16, 17, 18, 19)
-
-
20. A system comprising:
-
a processor; and a memory device storing instructions which, when executed by the processor, cause the processor to perform operations comprising; dequeuing a process from an asynchronous execution queue for execution; establishing, in connection with the execution, post-queue stack trace information, wherein stack trace information comprises debugging information that provides a backtrace to at least one portion of a program that caused the process to become enqueued and subsequently dequeued; retrieving pre-queue stack trace information associated with the process that was stored prior to dequeuing the process; and merging the pre-queue stack trace information with the post-queue stack trace information to yield a merged stack trace for the process. - View Dependent Claims (21, 22, 23, 24, 25)
-
Specification