Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer-implemented method comprising: receiving source code for a computer-executable program, the source code comprising a plurality of lines of code, the plurality of lines of code comprising statements that define values of variables and a plurality of execution paths, wherein respective execution paths are taken during execution of the computer-executable program by a computer processor based at least in part respective values of the variables; receiving a reachability query from a user, the reachability query comprising: a user-selected initial line of code from amongst the plurality of lines of code; a user-selected intermediate line of code from amongst the plurality of lines of code; and a user-selected destination line of code from amongst the plurality of lines of code; responsive to receiving the reachability query, identifying: an execution path in the plurality of execution paths that begins at the initial line of code, then reaches the intermediate line of code, and subsequently reaches the destination line of code; and a value of at least one variable in the variables that causes the program to execute over the execution path; and displaying graphical data on a display screen of a computing device, the graphical data indicative of the execution path and the value of the at least one variable.
2. The method of claim 1 , wherein the graphical data is displayed in an integrated development environment graphical user interface.
3. The method of claim 2 , the execution path comprises a first method, followed by a second method, followed by a third method, the first method calls the second method, the second method calls the third method, the graphical data comprises a graphical representation of the first method, a graphical representation of the second method, and a graphical representation of the third method, the graphical data further comprises an indication that the execution path comprises execution of the first method, the second method, and the third method in sequence.
4. The method of claim 1 , the method of claim 1 , wherein the graphical data is displayed in a command line interface.
5. The method of claim 1 configured for execution in a debugger, wherein portions of the graphical data are sequentially displayed responsive to respective commands from the user.
6. The method of claim 1 , wherein the source code is written in one of C# or C programming language.
7. The method of claim 1 , wherein the reachability query comprises a constraint on the value of the at least one variable.
8. The method of claim 1 , wherein the source code comprises between one thousand and one hundred thousand lines of code.
9. The method of claim 1 , wherein the reachability query is expressed as a natural language query.
10. The method of claim 1 , wherein the reachability query is expressed as a Boolean query.
11. The method of claim 1 , wherein identifying the execution path comprises: setting forth an assertion to a computer-executable theorem prover that the destination line of code specified in the reachability query is unreachable; and receiving from the theorem prover a counter-example, the counter-example comprising the execution path.
12. The method of claim 11 , further comprising generating a global representation of the computer program in formulaic code based at least in part upon the source code, wherein the theorem prover is provided with the formulaic code and generates the counter-example based upon the formulaic code and the assertion.
13. The method of claim 1 , wherein identifying the value of the at least one variable comprises: setting forth an assertion to a computer-executable theorem prover that the destination line of code specified in the reachability query is unreachable; and receiving from the theorem prover a counter-example, the counter-example comprising the value of the at least one variable.
14. A system comprising: a computer processor; and a memory that comprises a plurality of components that are executed by the processor, the plurality of components comprising: a query receiver component that receives a reachability query, the reachability query comprising: a user-selected initial line of code in source code of a computer-executable program; a user-selected intermediate line of code in the source code of the computer-executable program; and a user-selected destination line of code in the source code of the computer-executable program, the source code comprising a plurality of lines of code and a plurality of potential execution paths therethrough; a path determiner component that identifies an execution path from amongst the plurality of potential execution paths that begins at the initial line of code, passes through the intermediate line of code, and subsequently reaches the destination line of code, the path determiner component further identifying a value of at least one variable in the computer-executable program that at least partially causes the execution path to be taken during execution of the computer-executable program; and a visualizer component that generates graphical data for display on a display screen of a computing device, the graphical data depicting the execution path.
15. The system of claim 14 , wherein the plurality of components are comprised by an integrated development environment.
16. The system of claim 14 , wherein the plurality of components are comprised by a debugger.
17. The system of claim 14 , wherein the plurality of components are comprised by a command line interface.
18. The system of claim 14 , wherein the path determiner component comprises a theorem prover that outputs a trace that identifies the execution path.
19. A computer-readable medium comprising instructions that, when executed by a processor, cause the processor to perform acts comprising: receiving source code of a computer-executable program, the source code comprising a plurality of lines of code, the source code comprising a plurality of potential execution paths therethrough; receiving a reachability query, the reachability query comprising a user-selected initial line of code, a user-selected intermediate line of code, and a user-selected destination line of code; responsive to receiving the reachability query, identifying an execution path in the plurality of execution paths that begins at the user-selected initial line of code, then reaches the intermediate line of code, and subsequently reaches the destination line of code; and displaying graphical data on a display screen of a computing device, the graphical data depicting the execution path and at least one value for at least one variable corresponding to the execution path.
20. The computer-readable medium of claim 19 , wherein identifying the execution path in the plurality of execution paths comprises: setting forth an assertion to a computer-executable theorem prover that the destination line of code specified in the reachability query is unreachable; and receiving from the theorem prover a counter-example, the counter-example comprising the execution path.
Unknown
April 21, 2015
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.