US12346238B2ActiveUtilityA1

Systems, methods, and devices for vertically integrated instrumentation and trace reconstruction

93
Assignee: GREEN HILLS SOFTWARE LLCPriority: Oct 11, 2016Filed: May 31, 2024Granted: Jul 1, 2025
Est. expiryOct 11, 2036(~10.3 yrs left)· nominal 20-yr term from priority
G06F 11/3636G06F 11/3698G06F 11/3096G06F 2201/865G06F 11/302G06F 11/3476G06F 11/323G06F 11/3644G06F 11/3664
93
PatentIndex Score
1
Cited by
42
References
22
Claims

Abstract

In an embodiment, a system is configured to replay and/or reconstruct execution events and system states in real time or substantially in real time starting from the point when execution of a target program has stopped to the point when the user desires to step through the target program's execution in order to debug the software. In an embodiment, a system is configured to efficiently collect trace data that is sufficient to reconstruct the state of a computer system at any point of time from the start of execution to the time execution was stopped. Efficient and effective debugging of the software can be performed using embodiments of the disclosed methods, systems, and devices.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method of instrumenting at least one computer program to perform reconstruction of a state of the at least one computer program at one or more points in time, the method comprising:
 by at least one processor:
 instrumenting at least one basic block in the at least one computer program by adding, as a memory modification instrumentation, one or more instructions to the at least one basic block in the at least one computer program such that the memory modification instrumentation records into a log, as a memory modification data, wherein at least one memory modification record comprises data associated with one or more memory locations and one or more identifiers of the one or more memory locations; and 
 executing at least one compiler-driven or post-compilation optimization on the memory modification instrumentation responsive to determining that at least one or more of the memory modification data can be inferred, 
 wherein a template is used to interpret the memory modification data in the log, and wherein the template provides a context for a reconstruction of an inferred memory modification data. 
 
 
     
     
       2. The method of  claim 1 , wherein the at least one compiler-driven or post-compilation optimization on the memory modification instrumentation causes a subset of the memory modification data that can be inferred to be omitted from the at least one memory modification record. 
     
     
       3. The method of  claim 2 , wherein the subset of the memory modification data that can be inferred comprises a subset of the one or more identifiers of the one or more memory locations. 
     
     
       4. The method of  claim 3 , wherein the subset of the memory modification data that can be inferred comprises one or more identifiers of one or more memory locations of a memory value written in the at least one basic block in the at least one computer program. 
     
     
       5. The method of  claim 4 , wherein the one or more identifiers of the one or more memory locations of the memory value written in the at least one basic block in the at least one computer program comprise locations configured to be inferred from another memory location of the memory value written in the at least one basic block in the at least one computer program as a key location. 
     
     
       6. The method of  claim 5 , wherein the locations configured to be inferred are at constant offsets from the key location. 
     
     
       7. The method of  claim 4 , wherein the one or more memory locations of the memory value written in the at least one basic block in the at least one computer program comprise constants. 
     
     
       8. The method of  claim 1 , wherein the at least one computer program is represented by one or more computer files. 
     
     
       9. The method of  claim 8 , wherein the one or more computer files comprise the template providing the context for the reconstruction of the inferred memory modification data. 
     
     
       10. The method of  claim 9 , wherein the template stored in the one or more computer files is configured to be used for the reconstruction of the state of the at least one computer program at the one or more points in time. 
     
     
       11. The method of  claim 10 , wherein the reconstruction of the state of the at least one computer program at the one or more points in time is performed by a debugger. 
     
     
       12. A non-transitory computer-readable storage medium storing instruction that, when executed by at least one processor, cause the at least one processor to perform a method of instrumenting at least one computer program, the method comprising:
 instrumenting at least one basic block in at least one computer program by adding, as a memory modification instrumentation, one or more instructions to the at least one basic block in the at least one computer program such that the memory modification instrumentation records into a log, as a memory modification data, wherein at least one memory modification record comprises data associated with one or more memory locations and one or more identifiers of the one or more memory locations; and 
 executing at least one compiler-driven or post-compilation optimization on the memory modification instrumentation responsive to determining that at least one or more of the memory modification data can be inferred, 
 wherein a template is used to interpret the memory modification data in the log, and wherein the template provides a context for a reconstruction of an inferred memory modification data. 
 
     
     
       13. The non-transitory computer-readable storage medium of  claim 12 , wherein the at least one compiler-driven or post-compilation optimization on the memory modification instrumentation causes a subset of the memory modification data that can be inferred to be omitted from the at least one memory modification record. 
     
     
       14. The non-transitory computer-readable storage medium of  claim 13 , wherein the subset of the memory modification data that can be inferred comprises a subset of the one or more identifiers of the one or more memory locations. 
     
     
       15. The non-transitory computer-readable storage medium of  claim 14 , wherein the subset of the memory modification data that can be inferred comprises one or more identifiers of one or more memory locations of a memory value written in the at least one basic block in the at least one computer program. 
     
     
       16. The non-transitory computer-readable storage medium of  claim 15 , wherein the one or more identifiers of the one or more memory locations of the memory value written in the at least one basic block in the at least one computer program comprise locations configured to be inferred from another memory location of the memory value written in the at least one basic block in the at least one computer program as a key location. 
     
     
       17. The non-transitory computer-readable storage medium of  claim 16 , wherein the locations configured to be inferred are at constant offsets from the key location. 
     
     
       18. The non-transitory computer-readable storage medium of  claim 15 , wherein the one or more memory locations of the memory value written in the at least one basic block in the at least one computer program comprise constants. 
     
     
       19. The non-transitory computer-readable storage medium of  claim 12 , wherein the at least one computer program is represented by one or more computer files. 
     
     
       20. The non-transitory computer-readable storage medium of  claim 19 , wherein the one or more computer files comprise the template providing the context for the reconstruction of the inferred memory modification data. 
     
     
       21. The non-transitory computer-readable storage medium of  claim 20 , wherein the template stored in the one or more computer files is configured to be used for the reconstruction of a state of the at least one computer program at one or more points in time. 
     
     
       22. The non-transitory computer-readable storage medium of  claim 21 , wherein the reconstruction of the state of the at least one computer program at the one or more points in time is performed by a debugger.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.