IP Library Granted Patent US 8,745,591
Granted Patent B2
US 8,745,591 · App. 13/277,203 · Granted Jun 3, 2014

Data flow visualization and debugging

Inventors: Bart De Smet (Bellevue, WA); Henricus Johannes Maria Meijer (Mercer Island, WA)
Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,745,591
App. No.
13/277,203
Granted
Jun 3, 2014
Kind
B2
Abstract

Computation execution can be visualized and debugged. A computation such as a database query plan graph can be extracted from a database query expression. Trace points can be injected into the database query expression while preserving original behavior. Query graphs can be generated with automatic inserting of mechanisms to connect to trace points, enabling visualization of query execution lifecycle states, collection of data traces across operators, and historical debugging with replay of data sets.

Claims (46)

1. A system comprising:

at least one processor of a computing device;

a memory of the computing device; and

at least one module loaded into the memory causing the at least one processor to:

capture a computation in a data structure, the data structure comprising an expression tree;

construct a graph from the data structure, the graph comprising nodes representing data and edges representing operators used in the computation;

instrument the computation by adding code for a trace point, the trace point dispatching at least one notification to an observer, the dispatching of the at least one notification triggered by a specified event;

visualize the computation during execution by mapping the graph onto a user interface representation; and

trace flow of data through the computation by tagging the data with an identifier to determine at least one operator operating on the data.

2. The system of claim 1 , further comprising:

at least one module loaded into the memory causing the at least one processor to:

cache the data by injecting code into the computation; and

rerun the computation using the cached data.

3. The system of claim 1 , wherein:

the computation comprises a query operation.

4. The system of claim 1 , wherein an execution plan graph is constructed from the expression tree with nodes of the execution plan graph representing intermediate sequences of data and edges of the execution plan graph representing operators used in the computation.

5. The system of claim 1 , wherein the expression tree is instrumented with at least one trace point, the at least one trace point dispatching at least one notification, the dispatching of the at least one notification triggered by a specified event, the at least one notification dispatched to a debugger, the debugger executing a breakpoint, watch window, or execution visualizer, based on the at least one trace point associated with a particular user interface element.

6. The system of claim 5 , wherein during execution of the instrumented expression tree, data is tagged with a trace identifier that identities a source of the data or an operator that operates on the data.

7. A method comprising:

converting a programming language expression into an expression tree representing the programming language expression by a processor of a software development computer;

converting the expression tree into an execution plan graph, nodes of the execution plan graph representing intermediate sequences of data produced by execution of the programming language expression and edges of the execution plan graph representing execution operators executing on data input to the programming language expression;

instrumenting the expression tree by rewriting the expression tree with at least one additional node to connect to a debugger; and

displaying a visualization of an execution graph generated from the instrumented expression tree during execution of the programming language expression.

8. The method of claim 7 , wherein the programming language expression comprises a query.

9. The method of claim 7 , further comprising capturing the expression tree by inserting code into the programming language expression.

10. The method of claim 7 , the visualization displaying at least one of a plurality of source nodes representing at least one of a plurality of expression tree nodes, the at least one expression tree node comprising a constant expression, a member expression, or a method call expression.

11. The method of claim 7 , the visualization displaying a scrollable panel representing a plurality of inner sequences created during execution of the programming language expression.

12. The method of claim 11 , wherein each of the plurality of inner sequences is tagged with an identifier that identifies an activated query execution graph.

13. The method of claim 7 , further comprising attaching tracing information to an object flowing through the programming language expression, the tracing information used for trace debugging, attaching the tracing information by adding an operator to the execution plan graph.

14. A computer-readable storage medium, which is not a signal, comprising computer-executable instructions which when executed cause at least one processor of a computing device to:

convert a programming language expression into an expression tree representing the programming language expression;

convert the expression tree into an execution plan graph, nodes of the execution plan graph representing intermediate sequences of data produced by execution of the programming language expression and edges of the execution plan graph representing program operators executing on data input to the programming language expression;

instrumenting the expression tree by rewriting the expression tree adding code for a trace point, the trace point dispatching at least one notification to an observer, the dispatching of the at least one notification triggered by a specified event; and

displaying a visualization of an execution graph generated from the instrumented expression tree during execution of the programming language expression.

15. The computer-readable storage medium of claim 14 , comprising further computer-executable instructions, which when executed cause at least one processor to:

cache data by injecting code into the programming language expression; and

rerun the programming language expression using the cached data.

16. The computer-readable storage medium of claim 15 , comprising further computer-executable instructions, which when executed cause at least one processor to:

visualize execution of the programming language expression by mapping the execution graph onto a user interface representation.

17. The computer-readable storage medium of claim 14 , comprising further computer-executable instructions, which when executed cause at least one processor to:

trace flow of data through the programming language expression by tagging the data with an identifier to determine at least one operator operating on the data or trace flow of data through the programming language expression by tagging the data with an identifier to determine a source of the data.

18. The computer-readable storage medium of claim 14 , comprising further computer-executable instructions, which when executed cause at least one processor to:

receive a programming language expression comprising a query.

19. The computer-readable storage medium of claim 14 , comprising further computer-executable instructions, which when executed cause at least one processor to:

attach tracing information to objects flowing through the programming language expression, the tracing information used for trace debugging, by adding an operator to the execution plan graph.

20. The computer-readable storage medium of claim 14 , wherein the visualization includes at least one of a plurality of source nodes representing at least one of a plurality of expression tree nodes, the at least one of the plurality of expression tree nodes comprising at least one of a constant expression, a member expression, or a method call expression.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 14, 2016
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: ZHIGU HOLDINGS LIMITED
Reel/Frame 040354/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2011
From: DE SMET, BART; MEIJER, HENRICUS JOHANNES MARIA
To: MICROSOFT CORPORATION
Reel/Frame 027089/0892 →
Continuity (1)
Related Publication 20130104107A1 · Apr 25, 2013