IP Library Granted Patent US 8,719,796
Granted Patent B2
US 8,719,796 · App. 13/012,133 · Granted May 6, 2014

Parametric trace slicing

Inventors: Grigore Rosu (Champaign, IL); Feng Chen (Urbana, IL); Patrick O. Meredith (Granite City, IL)
Assignee: The Board of Trustees of the University of Illinois
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 8,719,796
App. No.
13/012,133
Granted
May 6, 2014
Kind
B2
Abstract

A program trace is obtained and events of the program trace are traversed. For each event identified in traversing the program trace, a trace slice of which the identified event is a part is identified based on the parameter instance of the identified event. For each trace slice of which the identified event is a part, the identified event is added to an end of a record of the trace slice. These parametric trace slices can be used in a variety of different manners, such as for monitoring, mining, and predicting.

Claims (53)

1. A method implemented in one or more computing devices, the method comprising:

obtaining a program trace of a program, the program trace having been generated using predictive program instrumentation and including one or more feasible traces that were not part of a program execution from which the program trace is generated, the one or more feasible traces having been generated based on partial orders of events determined at each of multiple predetermined points during collection of a direct trace of the program;

traversing events of the program trace;

identifying, for each event identified in traversing the program trace, a trace slice of which the identified event is a part based on one or more parameter instances in the identified event;

adding, for each trace slice of which the identified event is a part, the identified event to an end of a record of the trace slice;

obtaining one or more trace slices obtained from the program trace;

generating a specification for each of the one or more trace slices, each specification comprising a finite state machine indicating a manner in which the program operates; and

outputting the specification for each of the one or more trace slices.

2. A method as recited in claim 1 , wherein the program trace is a program trace of a program running while the method is being performed.

3. A method as recited in claim 1 , wherein an event having no parameter instances is part of all trace slices.

4. A method as recited in claim 1 , further comprising maintaining a record of trace slices for each possible combination of parameter instances in the program trace, the possible combination of parameter instances being identified based on the parameter instances observed while traversing the program trace.

5. A method as recited in claim 1 , wherein traversing the events of the program trace comprises traversing the program trace from a first event of the program trace towards a last event of the program trace.

6. A method as recited in claim 1 , wherein traversing the program trace comprises traversing the program trace one time regardless of the number of parametric trace slices that are obtained from the program trace.

7. A method as recited in claim 1 , further comprising:

determining, for at least part of the program trace, whether a set of constraints for the program trace is complied with; and

outputting an indication of whether the set of constraints for the program trace is complied with.

8. A method as recited in claim 1 , further comprising monitoring the program trace by:

maintaining a record of monitor instance states, wherein each monitor instance state indicates, for a particular set of parameter instances, a set of identified events; and

maintaining a record of whether each monitor instance state complies with one or more constraints on the program trace.

9. A method as recited in claim 1 , further comprising:

generating, for each specification, a regular expression equivalent to the specification; and

outputting the regular expression for each of the one or more trace slices.

10. One or more computer readable memories or non-transitory storage devices having stored thereon multiple instructions execution of which, by one or more processors of a device, causes the one or more processors to:

obtain a program trace of a program, the program trace having been generated using predictive program instrumentation and including one or more feasible traces that were not part of a program execution from which the program trace is generated, the one or more feasible traces having been generated based on partial orders of events determined at each of multiple predetermined points during collection of a direct trace of the program;

traverse events of the program trace;

identify, for each event identified in traversing the program trace, a trace slice of which the identified event is a part based on one or more parameter instances in the identified event;

add, for each trace slice of which the identified event is a part, the identified event to an end of a record of the trace slice;

obtain one or more trace slices obtained from the program trace;

generate a specification for each of the one or more trace slices, each specification comprising a finite state machine indicating a manner in which the program operates; and

output the specification for each of the one or more trace slices.

11. One or more computer readable memories or non-transitory storage devices as recited in claim 10 , the multiple instructions further causing the one or more processors to maintain a record of trace slices for each possible combination of parameter instances in the program trace, the possible combination of parameter instances being identified based on the parameter instances observed while traversing the program trace.

12. One or more computer readable memories or non-transitory storage devices as recited in claim 10 , wherein to traverse the events of the program trace is to traverse the program trace from a first event of the program trace towards a last event of the program trace.

13. One or more computer readable memories or non-transitory storage devices as recited in claim 10 , wherein to traverse the program trace is to traverse the program trace one time regardless of the number of parametric trace slices that are obtained from the program trace.

14. One or more computer readable memories or non-transitory storage devices as recited in claim 10 , the multiple instructions further causing the one or more processors to:

determine, for at least part of the program trace, whether a set of constraints for the program trace is complied with; and

output an indication of whether the set of constraints for the program trace is complied with.

15. One or more computer readable memories or non-transitory storage devices as recited in claim 10 , the multiple instructions further causing the one or more processors to monitor the program trace by:

maintaining a record of monitor instance states, wherein each monitor instance state indicates, for a particular set of parameter instances, a set of identified events; and

maintaining a record of whether each monitor instance state complies with one or more constraints on the program trace.

16. One or more computer readable memories or non-transitory storage devices as recited in claim 10 , the multiple instructions further causing the one or more processors to:

generate, for each specification, a regular expression equivalent to the specification; and

output the regular expression for each of the one or more trace slices.

17. A computing device comprising:

a processor; and

one or more computer readable non-transitory media, coupled to the processor, to store multiple instructions execution of which by the processor causes the processor to:

obtain a program trace of a program, the program trace having been generated using predictive program instrumentation and including one or more feasible traces that were not part of a program execution from which the program trace is generated, the one or more feasible traces having been generated based on partial orders of events determined at each of multiple predetermined points during collection of a direct trace of the program,

traverse events of the program trace,

identify, for each event identified in traversing the program trace, a trace slice of which the identified event is a part based on one or more parameter instances in the identified event,

add, for each trace slice of which the identified event is a part, the identified event to an end of a record of the trace slice,

obtain one or more trace slices obtained from the program trace,

generate a specification for each of the one or more trace slices, each specification comprising a finite state machine indicating a manner in which the program operates, and

output the specification for each of the one or more trace slices.

18. A method as recited in claim 1 , wherein the direct trace of the program is a trace corresponding to an actual execution of the program.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 14, 2014
From: ROSU, GRIGORE; MEREDITH, PATRICK O.
To: THE BOARD OF TRUSTEES OF THE UNIVERSITY OF ILLINOIS
Reel/Frame 032443/0585 →
CONFIRMATORY LICENSE Recorded May 23, 2011
From: UNIVERSITY OF ILLINOIS URBANA-CHAMPAIGN
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 026321/0144 →
Continuity (2)
Provisional Application 61298303 · Jan 26, 2010
Related Publication 20110320878A1 · Dec 29, 2011