Debugging optimized flows with breakpoints using stored breakpoint trigger indicators
First Claim
1. A method of debugging a user defined flow of a program by executing an optimized flow derived from the user defined flow, each of said optimized flow and said user defined flow comprising a plurality of nodes connected by a plurality of connections, said method comprising:
- constructing a stack associated with a terminal of a given node of said plurality of nodes in said optimized flow, said stack being tangibly embodied on a storage-type computer readable medium, said terminal connecting to a given optimized flow connection of said plurality of connections in said optimized flow, where said given optimized flow connection is associated with at least one user flow connection of said plurality of connections in said user defined flow;
reporting imminent execution of said given optimized flow connection;
receiving an instruction to push an indication of a particular user flow connection, among said at least one user flow connection associated with said given optimized flow connection, into said stack, the indication enabling the user to debug the user defined flow; and
responsive to receiving said instruction to push, push said indication of said particular user flow connection into said stack such that the user can debug the program code using the indication.
3 Assignments
0 Petitions
Accused Products
Abstract
In a development environment for message flows, a user defined flow may be processed into a more efficient optimized flow. However, debugging execution of the optimized flow may be confusing to the user where a correspondence between connections in the optimized flow and connections in the user defined flow are not direct. To mitigate this confusion, a connections mapping table is generated along with the optimized flow. The deploy document received by the runtime may include enough information to recreate the connections mapping table such that during debugging of the optimized flow, the user may follow the user defined flow. The use of a stack at the runtime allows a debugger to maintain awareness of previous pauses in execution caused by the placement of breakpoints on connections in the user defined flow while directing the runtime through execution of the optimized flow.
-
Citations
14 Claims
-
1. A method of debugging a user defined flow of a program by executing an optimized flow derived from the user defined flow, each of said optimized flow and said user defined flow comprising a plurality of nodes connected by a plurality of connections, said method comprising:
-
constructing a stack associated with a terminal of a given node of said plurality of nodes in said optimized flow, said stack being tangibly embodied on a storage-type computer readable medium, said terminal connecting to a given optimized flow connection of said plurality of connections in said optimized flow, where said given optimized flow connection is associated with at least one user flow connection of said plurality of connections in said user defined flow; reporting imminent execution of said given optimized flow connection; receiving an instruction to push an indication of a particular user flow connection, among said at least one user flow connection associated with said given optimized flow connection, into said stack, the indication enabling the user to debug the user defined flow; and responsive to receiving said instruction to push, push said indication of said particular user flow connection into said stack such that the user can debug the program code using the indication. - View Dependent Claims (2, 3, 4)
-
-
5. A runtime for executing an optimized flow that is derived from a user defined flow, the execution of the optimized flow being used by a user to debug the user defined flow, each of said optimized flow and said user defined flow comprising a plurality of nodes connected by a plurality of connections, said runtime operable to:
-
construct a stack associated with a terminal of a given node of said plurality of nodes in said optimized flow, said stack being tangibly embodied on a storage-type computer readable medium, said terminal connecting to a given optimized flow connection of said plurality of connections in said optimized flow, where said given optimized flow connection is associated with at least one user flow connection of said plurality of connections in said user defined flow; report imminent execution of said given optimized flow connection; receive an instruction to push an indication of a particular user flow connection, among said at least one user flow connection associated with said given optimized flow connection, into said stack, the indication enabling the user to debug the user defined flow; and push said indication of said particular user flow connection into said stack so that the user can debug the user defined flow.
-
-
6. A computer readable medium containing computer-executable instructions which, when performed by a processor in a computer system for executing an optimized flow that is derived from a user defined flow, that is used to debug the user defined flow, each of said optimized flow and said user defined flow comprising a plurality of nodes connected by a plurality of connections, cause said computer system to:
-
construct a stack associated with a terminal of a given node of said plurality of nodes in said optimized flow, said stack being tangibly embodied on a storage-type computer readable medium, said terminal connecting to a given optimized flow connection of said plurality of connections in said optimized flow, where said given optimized flow connection is associated with at least one user flow connection of said plurality of connections in said user defined flow; report imminent execution of said given optimized flow connection; receive an instruction to push an indication of a particular user flow connection, among said at least one user flow connection associated with said given optimized flow connection, into said stack, the indication enabling the user to debug the user defined flow; and push said indication of said particular user flow connection into said stack so that the user can debug the user defined flow.
-
-
7. A debugger for debugging a user defined flow that has been compiled into an optimized flow, each of said optimized flow and said user defined flow comprising a plurality of nodes connected by a plurality of connections, said debugger operable to:
-
receive a report, from a runtime, of imminent execution of a given optimized flow connection of said plurality of connections in said optimized flow; query said runtime to identify at least one user flow connection of said plurality of connections in said user defined flow associated with said given optimized flow connection; determine whether a breakpoint has been placed on a first user flow connection of said at least one user flow connection in said user defined flow; in response to determining whether a breakpoint has been placed, determine whether an indication of said first user flow connection exists in a stack associated with a terminal of a given node of said plurality of nodes in said optimized flow, said stack being tangibly embodied on a storage-type computer readable medium, said terminal connecting to said given optimized flow connection; and in response to determining whether an indication of said first user flow connection, instruct said runtime to push an indication of said first user flow connection into said stack.
-
-
8. A computer readable medium containing computer-executable instructions that, when performed by a processor in a computer system for debugging a user defined flow that has been compiled into an optimized flow, each of said optimized flow and said user defined flow comprising a plurality of nodes connected by a plurality of connections, cause said computer system to:
-
receive a report, from a runtime, of imminent execution of a given optimized flow connection of said plurality of connections in said optimized flow; query said runtime to identify at least one user flow connection of said plurality of connections in said user defined flow associated with said given optimized flow connection; determine whether a breakpoint has been placed on a first user flow connection of said at least one user flow connection in said user defined flow; in response to determining whether a breakpoint has been placed, determine whether an indication of said first user flow connection exists in a stack associated with a terminal of a given node of said plurality of nodes in said optimized flow, said stack being tangibly embodied on a storage-type computer readable medium, said terminal connecting to said given optimized flow connection; and in response to determining whether an indication of said first user flow connection, instruct said runtime to push an indication of said first user flow connection into said stack.
-
-
9. A method of debugging a program code, the program code including at least one node having a breakpoint and a variable, the breakpoint for allowing a user to use a value of the variable to debug the program code, the method comprising:
-
generating an optimized flow from the program code, the generated optimized flow having at least two optimized nodes derived from the one node having the breakpoint; executing the optimized code; ensuring that two values of the variable are stored during execution of the optimized code, each one of the values being stored when one of the at least two optimized nodes is traversed; and debugging the program code using the two stored values of the variable. - View Dependent Claims (10)
-
-
11. A computer program product on a storage-type computer readable medium for allowing a user to debug a program code, the program code including at least one node having a breakpoint and a variable, the breakpoint for allowing a user to use a value of the variable to debug the program code, the computer program product comprising:
-
code means for generating an optimized flow from the program code, the generated optimized flow having at least two optimized nodes derived from the one node having the breakpoint; code means for executing the optimized code; code means for ensuring that two values of the variable are stored during execution of the optimized code, each one of the values being stored when one of the at least two optimized nodes is traversed thereby allowing the user to debug the program code using the stored values of the variable. - View Dependent Claims (12)
-
-
13. A computer system being used to debug a program code, the program code including at least one node having a breakpoint and a variable, the breakpoint for allowing a user to use a value of the variable to debug the program code, the computer system comprising:
-
a storage device to store code data; and a processor for processing the code data to generate an optimized flow from the program code, the generated optimized flow having at least two optimized nodes derived from the one node having the breakpoint, to execute the optimized code, to ensure that two values of the variable are stored during execution of the optimized code, each one of the values being stored when one of the at least two optimized nodes is traversed, the two stored values of the variable enabling the user to debug the program code. - View Dependent Claims (14)
-
Specification