IP Library Granted Patent US 12,001,316
Granted Patent B2
US 12,001,316 · App. 18/184,848 · Granted Jun 4, 2024

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,001,316
App. No.
18/184,848
Granted
Jun 4, 2024
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 (53)

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:

during building of the at least one computer program, instrumenting the at least one computer program by adding, as an instrumentation, a plurality of instrumentation instructions to the at least one computer program to enable a collection of information about an execution of the at least one computer program,

wherein the plurality of instrumentation instructions negatively impact at least one metric comprising one or more of: a measurement of run-time performance, a measurement of memory footprint, or a measurement of code density of the at least one computer program;

causing a software tool to identify at least one instrumentation instruction of the plurality of instrumentation instructions based on detecting access to a reserved register by the at least one instrumentation instruction of the plurality of instrumentation instructions; and

causing the software tool to make one or more changes in an execution of the at least one instrumentation instruction of the plurality of instrumentation instructions within the at least one computer program,

wherein the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions cause a positive impact on the at least one metric.

2. The non-transitory computer-readable storage medium of claim 1 , wherein causing the software tool to make the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions comprises causing a removal of the at least one instrumentation instruction of the plurality of instrumentation instructions from the at least one computer program.

3. The non-transitory computer-readable storage medium of claim 2 , wherein the removal of the at least one instrumentation instruction of the plurality of instrumentation instructions is made without performing a recompilation of the at least one computer program.

4. The non-transitory computer-readable storage medium of claim 1 , wherein the software tool comprises a linker.

5. The non-transitory computer-readable storage medium of claim 1 , wherein causing the software tool to make the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions comprises causing the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions during the execution of the at least one computer program.

6. The non-transitory computer-readable storage medium of claim 1 , wherein the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions cause a change in the collection of information about the execution of the at least one computer program.

7. The non-transitory computer-readable storage medium of claim 6 , wherein the collection of information about the execution of the at least one computer program stops at a time after occurrence of the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions.

8. A method of instrumenting at least one computer program, the method comprising:

by at least one processor:

during building of the at least one computer program, instrumenting the at least one computer program by adding, as an instrumentation, a plurality of instrumentation instructions to the at least one computer program to enable a collection of information about an execution of the at least one computer program,

wherein the plurality of instrumentation instructions negatively impact at least one metric comprising one or more of: a measurement of run-time performance, a measurement of memory footprint, or a measurement of code density of the at least one computer program;

causing a software tool to identify at least one instrumentation instruction of the plurality of instrumentation instructions based on detecting access to a reserved register by the at least one instrumentation instruction of the plurality of instrumentation instructions; and

causing the software tool to make one or more changes in an execution of the at least one instrumentation instruction of the plurality of instrumentation instructions within the at least one computer program,

wherein the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions cause a positive impact on the at least one metric.

9. The method of claim 8 , wherein causing the software tool to make the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions comprises causing a removal of the at least one instrumentation instruction of the plurality of instrumentation instructions without performing a recompilation of the at least one computer program.

10. The method of claim 8 , wherein causing the software tool to make the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions comprises causing the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions during the execution of the at least one computer program.

11. The method of claim 8 , wherein the software tool comprises a linker.

12. 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:

during building of the at least one computer program, instrumenting the at least one computer program by adding, as an instrumentation, a plurality of instrumentation instructions to the at least one computer program to enable a collection of information about an execution of the at least one computer program,

wherein the plurality of instrumentation instructions negatively impact at least one metric comprising one or more of: a measurement of run-time performance, a measurement of memory footprint, or a measurement of code density of the at least one computer program; and

causing a software tool to make one or more changes in an execution of at least one instrumentation instruction of the plurality of instrumentation instructions within the at least one computer program,

wherein the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions cause the at least one instrumentation instruction of the plurality of instrumentation instructions not to be executed, and

wherein the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions cause a positive impact on the at least one metric.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the at least one instrumentation instruction of the plurality of instrumentation instructions is preceded by one or more guard instructions.

14. The non-transitory computer-readable storage medium of claim 13 , wherein the software tool is caused to perform a modification of the one or more guard instructions during the execution of the at least one computer program, and wherein the modification of the one or more guard instructions during the execution of the at least one computer program causes the at least one instrumentation instruction of the plurality of instrumentation instructions not to be executed.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the modification of the one or more guard instructions during the execution of the at least one computer program is effected without performing a recompilation of the at least one computer program.

16. The non-transitory computer-readable storage medium of claim 14 , wherein the modification of the one or more guard instructions during the execution of the at least one computer program is effected without restarting of the at least one computer program.

17. The non-transitory computer-readable storage medium of claim 14 , wherein a user's action results in the modification of the one or more guard instructions during the execution of the at least one computer program.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the user's action comprises specifying one or more conditions under which the modification of the one or more guard instructions during the execution of the at least one computer program is to take place.

19. The non-transitory computer-readable storage medium of claim 14 , wherein the modification of the one or more guard instructions during the execution of the at least one computer program comprises changing the one or more guard instructions to one or more branch instructions.

20. The non-transitory computer-readable storage medium of claim 14 , further comprising, subsequently to performing the modification of the one or more guard instructions during the execution of the at least one computer program, reversing the modification of the one or more guard instructions during the execution of the at least one computer program to cause the at least one instrumentation instruction of the plurality of instrumentation instructions to be executed.

21. The non-transitory computer-readable storage medium of claim 12 , wherein the software tool comprises a debugger.

22. A method of instrumenting at least one computer program, the method comprising:

by at least one processor:

during building of the at least one computer program, instrumenting the at least one computer program by adding, as an instrumentation, a plurality of instrumentation instructions to the at least one computer program to enable a collection of information about an execution of the at least one computer program,

wherein the plurality of instrumentation instructions negatively impact at least one metric comprising one or more of: a measurement of run-time performance, a measurement of memory footprint, or a measurement of code density of the at least one computer program; and

causing a software tool to make one or more changes in an execution of at least one instrumentation instruction of the plurality of instrumentation instructions within the at least one computer program,

wherein the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions cause the at least one instrumentation instruction of the plurality of instrumentation instructions not to be executed, and

wherein the one or more changes in the execution of the at least one instrumentation instruction of the plurality of instrumentation instructions cause a positive impact on the at least one metric.

23. The method of claim 22 , wherein the at least one instrumentation instruction of the plurality of instrumentation instructions is preceded by one or more guard instructions.

24. The method of claim 23 , wherein the software tool is caused to perform a modification of the one or more guard instructions during the execution of the at least one computer program, and wherein the modification of the one or more guard instructions during the execution of the at least one computer program causes the at least one instrumentation instruction of the plurality of instrumentation instructions not to be executed.

25. The method of claim 24 , wherein the modification of the one or more guard instructions during the execution of the at least one computer program is effected without performing a recompilation of the at least one computer program.

26. The method of claim 24 , wherein the modification of the one or more guard instructions during the execution of the at least one computer program is effected without restarting of the at least one computer program.

27. The method of claim 24 , wherein a user's action results in the modification of the one or more guard instructions during the execution of the at least one computer program.

28. The method of claim 27 , wherein the user's action comprises specifying one or more conditions under which the modification of the one or more guard instructions during the execution of the at least one computer program is to take place.

29. The method of claim 24 , wherein the modification of the one or more guard instructions during the execution of the at least one computer program comprises changing the one or more guard instructions to one or more branch instructions.

30. The method of claim 24 , further comprising, subsequently to performing the modification of the one or more guard instructions during the execution of the at least one computer program, reversing the modification of the one or more guard instructions during the execution of the at least one computer program to cause the at least one instrumentation instruction of the plurality of instrumentation instructions to be executed.

31. The method of claim 22 , wherein the software tool comprises a debugger.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 29, 2024
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 066605/0601 →
CHANGE OF NAME Recorded Feb 29, 2024
From: GREEN HILLS SOFTWARE, INC.
To: GREEN HILLS SOFTWARE LLC
Reel/Frame 066708/0010 →
Continuity (7)
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 20230325302A1 · Oct 12, 2023