IP Library Granted Patent US 11,609,840
Granted Patent B2
US 11,609,840 · App. 17/665,258 · Granted Mar 21, 2023

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 11,609,840
App. No.
17/665,258
Granted
Mar 21, 2023
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 (31)

1. A non-transitory computer-readable storage medium storing instructions 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 the at least one computer program by adding, to the at least one computer program, instrumentation instructions that log, to a unified log, trace data generated during execution of the at least one computer program on one or more execution units, wherein the trace data facilitates determination of a state of the at least one computer program at a plurality of points in time;

wherein the unified log comprises one or more logs and one or more pools of available memory configured to be written to by the one or more execution units;

wherein at least one log of the one or more logs of the unified log comprises one or more chunks of memory allocated from the one or more pools of available memory;

wherein each log of the one or more logs of the unified log comprises a current chunk of memory allocated from the one or more pools of available memory to which the instrumentation instructions log the trace data;

wherein each log of the one or more logs of the unified log comprises a log pointer from which a location of a next entry to be written within the current chunk of memory allocated from the one or more pools of available memory is determined; and

wherein logging the trace data to the unified log maximizes capacity of the unified log for storing the trace data generated during execution of the at least one computer program on the one or more execution units and is configured to improve execution performance of the at least one computer program.

2. The non-transitory computer-readable storage medium of claim 1 , wherein at least one chunk of memory from the one or more pools of available memory is allocated to each log of the one or more logs of the unified log.

3. The non-transitory computer-readable storage medium of claim 2 , wherein at least one log of the one or more logs of the unified log is extended by the allocation.

4. The non-transitory computer-readable storage medium of claim 3 , wherein the at least one log of the one or more logs of the unified log is extended responsive to the current chunk of memory allocated from the one or more pools of available memory being full.

5. The non-transitory computer-readable storage medium of claim 1 , wherein the instrumentation instructions write the trace data to the current chunk of memory allocated from the one or more pools of available memory associated with a log of the one or more logs of the unified log.

6. The non-transitory computer-readable storage medium of claim 1 , wherein the unified log supports archiving the current chunk of memory allocated from the one or more pools of available memory from a log of the one or more logs of the unified log and designating a new current chunk of memory allocated from the one or more pools of available memory within the log of the one or more logs of the unified log.

7. The non-transitory computer-readable storage medium of claim 6 , wherein identifying an end of the current chunk of memory allocated from the one or more pools of available memory in the log of the one or more logs of the unified log is used to determine when to initiate the archiving.

8. The non-transitory computer-readable storage medium of claim 6 , wherein the new current chunk of memory allocated from the one or more pools of available memory is assigned from the one or more pools of available memory.

9. The non-transitory computer-readable storage medium of claim 6 , wherein the new current chunk of memory allocated from the one or more pools of available memory comprises a recycled chunk of memory allocated from the one or more pools of available memory that was previously archived.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the recycled chunk of memory allocated from the one or more pools of available memory comprises a chunk of memory allocated from the one or more pools of available memory that was least recently archived.

11. The non-transitory computer-readable storage medium of claim 9 , wherein the recycled chunk of memory allocated from the one or more pools of available memory is cleared before it becomes the new current chunk of memory allocated from the one or more pools of available memory.

12. The non-transitory computer-readable storage medium of claim 1 , wherein the at least one computer program executing on the one or more execution units comprises one or more virtual address spaces and the current chunk of memory allocated from the one or more pools of available memory of the at least one log of the one or more logs of the unified log is mapped into a logging aperture within at least one virtual address space of the one or more virtual address spaces.

13. The non-transitory computer-readable storage medium of claim 12 , wherein one or more attempts to write beyond an end of the logging aperture are detected.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the one or more attempts to write beyond the end of the logging aperture are detected using one or more virtual memory addresses adjacent to the logging aperture that are left unmapped.

15. The non-transitory computer-readable storage medium of claim 12 , wherein the at least one virtual address space of the one or more virtual address spaces contains a plurality of logging apertures.

16. The non-transitory computer-readable storage medium of claim 15 , wherein at least one logging aperture of the plurality of logging apertures is associated with at least one execution unit of the one or more execution units.

17. The non-transitory computer-readable storage medium of claim 16 , wherein the instrumentation instructions are configured to log the trace data by writing the trace data to the at least one logging aperture of the plurality of logging apertures associated with the one or more execution units on which the instrumentation instructions are executed.

18. The non-transitory computer-readable storage medium of claim 1 , wherein a faulty software program writing erroneous data to the unified log is detected.

19. The non-transitory computer-readable storage medium of claim 18 , wherein a consumer of the erroneous data detects the erroneous data and stops consuming log data before consuming the erroneous data.

20. The non-transitory computer-readable storage medium of claim 1 , wherein the one or more logs of the unified log changes over time.

21. The non-transitory computer-readable storage medium of claim 1 , wherein the instrumentation instructions comprise one or more store instructions that bypass at least one data cache to improve execution performance of the at least one computer program.

22. The non-transitory computer-readable storage medium of claim 1 , wherein the instrumentation instructions comprise at least one instruction that manipulates a data cache to improve execution performance of the at least one computer program.

23. The non-transitory computer-readable storage medium of claim 22 , wherein the at least one instruction that manipulates the data cache results in a flushing of at least one data cache line of the data cache.

24. The non-transitory computer-readable storage medium of claim 22 , wherein the at least one instruction that manipulates the data cache results in a pre-allocation of at least one data cache line of the data cache.

25. The non-transitory computer-readable storage medium of claim 22 , wherein a compiler determines a placement of the at least one instruction that manipulates the data cache.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 22, 2022
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 061854/0395 →
CERTIFICATE OF CONVERSION Recorded Nov 22, 2022
From: GREEN HILLS SOFTWARE, INC.
To: GREEN HILLS SOFTWARE LLC
Reel/Frame 061986/0832 →
Continuity (6)
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 20220245057A1 · Aug 4, 2022
Cited By (1)
US 12,346,238