The following relates to application generation and debugging, and more particularly relates to systems and processes for debugging applications generated from a graphical programming language.
Debugging an application can be a difficult and laborious process. Programs are often millions of lines of code long. Furthermore, execution logs tracking the execution of the program are often millions of lines long as well. Accordingly, debugging a program can often be difficult, like looking for a needle in a haystack.
Exemplary embodiments will hereinafter be described in conjunction with the following drawing figures, wherein like numerals denote like elements, and
According to various exemplary embodiments, systems and methods are provided to debug applications creature using a graphical programming interface.
The graphical programming generation system 110 includes an application generator 111. The application generator 111 provides a graphical user interface (GUI) for generating the application. As discussed in further detail below, the application generator 111 provides an environment for generating an application without having to write any code. The application generator 111 may be used for simple or complex applications depending upon which tools are available to a user.
The application generator 111 includes a processor 112 and a memory 113. The processor 112 may be a central processing unit (CPU), a graphics processing unit (GPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a microcontroller, or any other logic unit or any combination thereof. The memory 113 may be any combination of volatile and non-volatile memory. In one embodiment, for example, a portion of the memory 113 may be a cloud-based memory remote from the graphical programming generation system 110 and accessible via a data connection. The memory 113 may include non-transitory instructions for executing the application generator 111 as discussed in further detail below.
In one embodiment, for example, the graphical programming generation system 110 may be a server. In this embodiment, the application generator 111 may itself be a virtual application accessible on the graphical programming generation system 110 via the computing device 130. In another embodiment, the graphical programming generation system 110 may be a computing device such as a desktop computer, a laptop, a cellular phone, a tablet, or the like.
In one embodiment, for example, the graphical programming generation system 110 may include a user interface 114. The user interface 114 may include one or more of a display, a touch screen interface, a mouse, a trackpad, a trackball, a keyboard, voice recognition, or the like, or any combination thereof. The graphical programming generation system 110 may further include a communication system 115. The communication system 115 may utilize any wired or wireless communication systems.
As discussed above, the screen tool 230 allows a user to add one or more screen nodes to their virtual application. Each screen node is a customizable display which allows the virtual application to display information to the user or collect information from the user. In one embodiment, for example, a wizard may be displayed to the user after a node is added to the canvas 210, which walks to user through the process of creating the specific node. In another embodiment, tools, like the tools 220 illustrated in
Returning to
The application, once created, could be millions of lines of code long, depending upon the complexity of the respective application. Likewise, execution logs tracking the execution of the application maybe millions of lines long. When an error occurs during the execution of the application, debugging the application may been difficult, particularly for the user who created the application who may know nothing about coding or for an administrator or other support member tasked with debugging the application who is unfamiliar with the application.
Accordingly, as illustrated in
The graphical programming debugger 121 includes a processor 122 and a memory 123. The processor 122 may be a central processing unit (CPU), a graphics processing unit (GPU), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a microcontroller, or any other logic unit or any combination thereof. The memory 123 may be any combination of volatile and non-volatile memory. In one embodiment, for example, a portion of the memory 123 may be a cloud-based memory remote from the graphical programming debugging system 120 and accessible via a data connection. The memory 123 may include non-transitory instructions for executing the graphical programming debugger 121 as discussed in further detail below.
While the graphical programming debugging system 120 and the graphical programming generation system 110 are illustrated as separate elements, the respective systems may be a single computing device, such as a server, a personal computer, or the like. Additionally, even if the graphical programming debugging system 120 and the graphical programming generation system 110 are separate systems, they may share resources such as a cloud-based memory.
In one embodiment, for example, the graphical programming debugging system 120 may be a server. In this embodiment, the graphical programming debugger 121 may itself be a virtual application accessible on the graphical programming debugging system 120 via the computing device 130. In another embodiment, the graphical programming debugging system 120 may be a computing device such as a desktop computer, a laptop, a cellular phone, a tablet, or the like.
In one embodiment, for example, the graphical programming debugging system 120 may include a user interface 124. The user interface 124 may include one or more of a display, a touch screen interface, a mouse, a trackpad, a trackball, a keyboard, voice recognition, or the like, or any combination thereof. The graphical programming debugging system 120 may further include a communication system 125. The communication system 125 may utilize any wired or wireless communication systems.
The graphical programming debugger 121 combines the execution of the application with a log associated with the application. In particular, the graphical programming debugger 121 combines the execution of each node of the application with a log of the execution of the node. Unlike typical debugging procedures where a user would have to manually insert numerous stops in an application to evaluate, for example, a call stack at various points in the application to try and find an error, the graphical programming debugger 121 steps through the generated application one node at a time. Furthermore, unlike typical debugging systems which generates a single log, which could be millions of lines of code long, the graphical programming debugger 121 displays the log associated with the node with the screen associated with the node.
As discussed above, the graphical programming debugger 121 includes an execution log 500 displayed simultaneously with the screen associated with the executed node. The execution log 500 includes details of the execution of the node. The execution log may include, for example, decision logic, variable assignment results, code invocation results, record create results, record update results, record delete results, record query results, user specifies input, looping results, error results, or the like, and any combination thereof. Because the execution log 500 is displayed with the respective node, context is given to the data within the execution log 500, making it easier for a user to identify where within the application the error is occurring.
The graphical programming debugger 121 further includes a progression interface 510. In this embodiment, the progression interface 510 includes a next butting 512 and a previous butting 514. However, the progression interface 510 could take a variety of forms. Unlike typical debugging procedures, which only allow a user to progress through an application in a single direction, namely from start to finish, the progression interface 510 allows the user to progress through the application in either direction. This allows a user to see how certain portions (e.g., variables) of the application change before and after the execution of the node.
In one embodiment, for example, before the graphical programming debugger 121 begins executing the application, the graphical programming debugger 121 may give the user the opportunity to enter variables into the application.
The graphical programming debugger 121 then receives a selection of a node to be executed. (Step 720). For example, the user may select a node by clicking the start button of the variable input interface 600 or by using the progression interface 510. While the progression interface 510 illustrated in
A processor, such as the processor 112, the processor 122 or a processor of a computing device 130, then executes the selected node using the variables input by the user or default variables. (Step 730). During execution of the node a processor may capture an execution log of the execution of the application and store the log in a memory. (Step 740). Any processor and memory in the graphical programming system 100 may capture and store the log, including the processor 112, the processor 122, a processor of the computing device 130, the memory 113, the memory 123 or a memory of the computing device 130, or any combination thereof. In one embodiment, for example, each node may be executed and captured one at a time, as discussed above. However, in another embodiment, the application may be executed from screen node to screen node. In this embodiment, intermediate nodes, such as decision nodes, or record-based nodes, may also be executed based upon the input variables, or default values, the execution of which can be captured and presented to the user all at one time.
The graphical programming debugger 121 then extracts, from the execution log, debugging information associated with the executed node. (Step 750). The extracted execution log, along with the screen related to the node are then displayed to the user. (Step 760). Because the execution log is displayed along with the screen associated with the node, the user can more easily locate and correct bugs in the application. The graphical programming debugger 121 then extracts then returns to Step 720 to await the next selection of a node to be executed. As discussed above, the user may go forwards and backwards through the application, allowing the user to see how each node changes variables, stacks and the like, giving the user a better appreciate of how each node is affecting the program and how each node may be contributing to an error in the application.
The term “exemplary” is used herein to represent one example, instance or illustration that may have any number of alternates. Any implementation described herein as “exemplary” should not necessarily be construed as preferred or advantageous over other implementations.
Although several exemplary embodiments have been presented in the foregoing description, it should be appreciated that a vast number of alternate but equivalent variations exist, and the examples presented herein are not intended to limit the scope, applicability, or configuration of the invention in any way. To the contrary, various changes may be made in the function and arrangement of the various features described herein without departing from the scope of the claims and their legal equivalents.