IP Library Granted Patent US 7,543,279
Granted Patent B2
US 7,543,279 · App. 10/852,935 · Granted Jun 2, 2009

Method for simulating back program execution from a traceback sequence

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 7,543,279
App. No.
10/852,935
Granted
Jun 2, 2009
Kind
B2
Abstract

A program execution data trace is created by instrumenting a program to record value sets during execution and an instruction trace. By simulating instructions either backward or forward from a first instruction associated with a recorded value set to a second instruction according to the instruction trace, a value set is determined for the second instruction. Backward and forward simulation can be combined to complement each other. For backward simulation, a table of simulation instructions is preferably maintained, which associates program instructions encountered in the instruction trace with simulation instructions which reverse the operation of the associated program instructions. Preferably, one or more probes is inserted into the program to save values of particular variables whose value may be difficult to determine. Preferably, the instruction trace is displayed alongside and correlated with the data trace.

Claims (48)

1. A system comprising:

a processor; and

a memory medium coupled to the processor, wherein the memory medium stores:

a computer program configured to provide an instruction execution trace,

an instrumentor, and

a simulator,

wherein the instrumentor is configured to instrument the computer program to record a data value set; and

wherein the simulator is configured to compute one or more new data value sets by a backward simulation from an instrumented instruction associated with a recorded data value set to a second instruction within the instruction execution trace.

2. The system as recited in claim 1 , wherein the simulator is configured to compute a new data value set for each instruction executed between the instrumented instruction and the second instruction.

3. The system as recited in claim 1 , wherein the simulator is configured to compute a new data value set for a subset of instructions executed between the instrumented instruction and the second instruction.

4. The system as recited in claim 3 , wherein the simulator is further configured to receive input specifying the subset of instructions.

5. The system as recited in claim 1 , further comprising a presenter configured to provide a representation of the one or more new data value sets.

6. The system as recited in claim 5 , wherein the representation is provided as input to a software application.

7. The system as recited in claim 5 , wherein the representation is provided together with a listing of corresponding instructions from the instruction execution trace and associated lines of source code.

8. The system as recited in claim 5 , wherein the representation is provided together with a listing of corresponding thread identifiers.

9. The system as recited in claim 5 , wherein the representation is provided together with a listing of corresponding program names and library names.

10. The system as recited in claim 1 , wherein the data value set is recorded upon exit from a routine.

11. The system as recited in claim 1 , wherein the data value set is recorded upon entering a routine.

12. A method comprising:

instrumenting a computer program configured to provide an instruction execution trace to record a data value set; and

computing one or more new data value sets by a backward simulation from an instrumented instruction associated with a recorded data value set to a second instruction within the instruction execution trace.

13. The method as recited in claim 12 , wherein the one or more new data value sets include a new data value set for each instruction executed between the instrumented instruction and the second instruction.

14. The method as recited in claim 12 , wherein the one or more new data value sets include a new data value set for a subset of instructions executed between the instrumented instruction and the second instruction.

15. The method as recited in claim 14 , further comprising:

receiving input specifying the subset of instructions.

16. The method as recited in claim 12 , further comprising:

providing a representation of the one or more new data value sets.

17. The method as recited in claim 16 , wherein the representation is provided as input to a software application.

18. The method as recited in claim 16 , wherein the representation is provided together with a listing of corresponding instructions from the instruction execution trace and associated lines of source code.

19. The method as recited in claim 16 , wherein the representation is provided together with a listing of corresponding thread identifiers.

20. The method as recited in claim 16 , wherein the representation is provided together with a listing of corresponding program and library names.

21. The method as recited in claim 12 , wherein the data value set is recorded upon exit from a routine.

22. The method as recited in claim 12 , wherein the data value set is recorded upon entering a routine.

23. A computer readable storage medium comprising software instructions, wherein the instructions are executable to:

instrument a computer program configured to provide an instruction execution trace to record a data value set; and

compute one or more new data value sets by a backward simulation from an instrumented instruction associated with a recorded data value set to a second instruction within the instruction execution trace.

24. The computer readable storage medium as recited in claim 23 , wherein the one or more new data value sets include a new data value set for each instruction executed between the instrumented instruction and the second instruction.

25. The computer readable storage medium as recited in claim 23 , wherein the one or more new data value sets include a new data value set for a subset of instructions executed between the instrumented instruction and the second instruction.

26. The computer readable storage medium as recited in claim 25 , wherein the instructions are further executable to:

receive input specifying the subset of instructions.

27. The computer readable storage medium as recited in claim 23 , wherein the instructions are further executable to:

provide a representation of the one or more new data value sets.

28. The computer readable storage medium as recited in claim 27 , wherein the representation is provided as input to a software application.

29. The computer readable storage medium as recited in claim 27 , wherein the representation is provided together with a listing of corresponding instructions from the instruction execution trace and associated lines of source code.

30. The computer readable storage medium as recited in claim 27 , wherein the representation is provided together with a listing of corresponding thread identifiers.

31. The computer readable storage medium as recited in claim 27 , wherein the representation is provided together with a listing of corresponding program and library names.

32. The computer readable storage medium as recited in claim 23 , wherein the data value set is recorded upon exit from a routine.

33. The computer readable storage medium as recited in claim 23 , wherein the data value set is recorded upon entering a routine.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 28, 2015
From: SYMANTEC OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 036199/0642 →
ASSET PURCHASE AGREEMENT Recorded Nov 6, 2008
From: GEODESIC SYSTEMS, INC.
To: VERITAS SOFTWARE CORPORATION
Reel/Frame 021796/0377 →
CAPITAL CONTRIBUTION AGREEMENT Recorded Nov 6, 2008
From: VERITAS SOFTWARE CORPORATION
To: VERITAS OPERATING CORPORATION
Reel/Frame 021796/0600 →
CHANGE OF NAME Recorded Nov 6, 2008
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 021796/0672 →