IP Library Granted Patent US 12,346,238
Granted Patent B2
US 12,346,238 · App. 18/731,084 · Granted Jul 1, 2025

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

Inventors: Daniel D. O'Dowd (Montecito, CA); Steven H. Ginzburg (Mountain View, CA); Nikola Valerjev (Goleta, CA); Gregory Davis (Santa Barbara, CA); Greg Eddington (Santa Barbara, CA); Nathan Field (Santa Barbara, CA); Mallory M. Green (Goleta, CA); Phillip Kelly (Goleta, CA); Michael B. Wolf (Blue Hill, ME); Tom Zavisca (Santa Barbara, CA)
Assignee: Green Hills Software LLC
G06F11/3644G06F11/3636G06F11/3664
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 12,346,238
App. No.
18/731,084
Granted
Jul 1, 2025
Kind
B2
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 (29)

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.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2025
From: O'DOWD, DANIEL D.; GINZBURG, STEVEN H.; VALERJEV, NIKOLA; DAVIS, GREGORY; EDDINGTON, GREG; FIELD, NATHAN; GREEN, MALLORY M.; KELLY, PHILLIP; WOLF, MICHAEL B.; ZAVISCA, TOM
To: GREEN HILLS SOFTWARE, INC.
Reel/Frame 070502/0279 →
CHANGE OF NAME Recorded Mar 13, 2025
From: GREEN HILLS SOFTWARE, INC.
To: GREEN HILLS SOFTWARE LLC
Reel/Frame 070502/0404 →
Continuity (8)
Continuation 18184848 · Mar 16, 2023
Continuation 17665258 · Feb 4, 2022
Continuation 17031606 · Sep 24, 2020
Continuation 16391108 · Apr 22, 2019
Continuation 15864907 · Jan 8, 2018
Continuation 15729123 · Oct 10, 2017
Provisional Application 62406829 · Oct 11, 2016
Related Publication 20240403192A1 · Dec 5, 2024
References Cited (42)
US 5784552A · Bishop et al. · 1998 [cited by applicant]
US 5894575A · Levine et al. · 1999 [cited by applicant]
US 6253317B1 · Knapp · 2001 [cited by applicant]
US 6311327B1 · O'Brien et al. · 2001 [cited by applicant]
US 6901581B1 · Schneider · 2005 [cited by applicant]
US 7664798B2 · Wood et al. · 2010 [cited by applicant]
US 7685388B1 · Jiang · 2010 [cited by applicant]
US 9898385B1 · O'Dowd et al. · 2018 [cited by applicant]
US 9904615B1 · O'Dowd et al. · 2018 [cited by applicant]
US 10324824B2 · O'Dowd et al. · 2019 [cited by applicant]
US 10817404B2 · O'Dowd et al. · 2020 [cited by applicant]
US 11243871B2 · O'Dowd et al. · 2022 [cited by applicant]
US 11609840B2 · O'Dowd et al. · 2023 [cited by applicant]
US 20020087949A1 · Golender et al. · 2002 [cited by applicant]
US 20020095660A1 · O'Brien et al. · 2002 [cited by applicant]
US 20050216536A1 · Stager et al. · 2005 [cited by applicant]
US 20060190930A1 · Hecht · 2006 [cited by applicant]
US 20070005664A1 · Kodavalla · 2007 [cited by applicant]
US 20080301417A1 · Law et al. · 2008 [cited by applicant]
US 20090049428A1 · Cozmei · 2009 [cited by applicant]
US 20130185601A1 · Mayer · 2013 [cited by applicant]
US 20130227350A1 · O'Riordan et al. · 2013 [cited by applicant]
US 20140298301A1 · Lindahal et al. · 2014 [cited by applicant]
US 20150052403A1 · Garrett et al. · 2015 [cited by applicant]
US 20150067651A1 · Hoffman · 2015 [cited by applicant]
US 20150160931A1 · Glazer · 2015 [cited by applicant]
US 20150378870A1 · Marron · 2015 [cited by applicant]
US 20160124728A1 · Mahaffey · 2016 [cited by applicant]
US 20160292061A1 · Marron et al. · 2016 [cited by applicant]
US 20170109409A1 · Nagy et al. · 2017 [cited by applicant]
US 20180253369A1 · O'Dowd · 2018 [cited by applicant]
US 20180357079A1 · Demulder et al. · 2018 [cited by applicant]
US 20200034276A1 · O'Dowd et al. · 2020 [cited by applicant]
US 20230325302A1 · O'Dowd et al. · 2023 [cited by applicant]
JP H096647 · 1997 [cited by applicant]
JP 2012256279 · 2012 [cited by applicant]
Communication pursuant to Article 94(3) EPC in European Application No. 17859981.7 dated Jan. 13, 2021. [cited by applicant]
International Search Report and Written Opinion for application No. PCT/US2017/055986, which is a PCT application related to the present application, mailed on Feb. 1, 2018. [cited by applicant]
International Preliminary Report on Patentability and Written Opinion for application No. PCT/US2017/055986, mailed on Apr. 16, 2019. [cited by applicant]
Veitch, et al. “XRay: A Function Call Tracing System” dated Apr. 5, 2016 in 9 pages. [cited by applicant]
Undo Software, “What is reversible debugging?” dated 2015 in 4 pages. [cited by applicant]
Undo Software, “What is reversible debugging?” dated 2015 in 3 pages. [cited by applicant]