Scalable execution tracing for large program codebases
Gespeichert in:
| Titel: | Scalable execution tracing for large program codebases |
|---|---|
| Patent Number: | 11494,287 |
| Publikationsdatum: | November 08, 2022 |
| Appl. No: | 16/844902 |
| Application Filed: | April 09, 2020 |
| Abstract: | Indications of a plurality of events whose occurrence is detected in a particular execution of a program are obtained. One or more partitions of a trace object corresponding to the execution are constructed, including a first partition corresponding to a first subset of the events. The first partition comprises a header portion which includes a compressed representation of one or more event chains, and a data portion comprising a compressed events record indicating an occurrence, during the execution, of a particular sequence of events indicated by an event chain. The trace object is stored. |
| Inventors: | Oracle International Corporation (Redwood City, CA, US) |
| Assignees: | Oracle International Corporation (Redwood City, CA, US) |
| Claim: | 1. A method, comprising: performing, at one or more computing devices: determining that a trace object corresponding to a particular execution of a program is to be created; generating respective sequence frequency records with respect to one or more events to be represented in the trace object, wherein a sequence frequency record indicates, with respect to a particular event, a set of one or more successor events of the particular event which meet a frequency-of-occurrence threshold, and wherein the sequence frequency records track respective counts of the one or more successor events occurring immediately after the particular event; and storing the trace object, wherein at least a portion of the trace object is produced using the respective sequence frequency records. |
| Claim: | 2. The method as recited in claim 1 , further comprising performing, at the one or more computing devices: generating, based at least in part on one or more sequence frequency records of the respective sequence frequency records, an event chain representing at least an occurrence of a first event immediately prior to a second event, wherein an indication of the event chain is included in the portion of the trace object. |
| Claim: | 3. The method as recited in claim 2 , wherein the indication of the event chain comprises a numeric identifier of the first event, followed by a delta value, wherein the delta value indicates a difference between a numeric identifier of the second event and the numeric identifier of the first event. |
| Claim: | 4. The method as recited in claim 1 , further comprising performing, at the one or more computing devices: constructing a plurality of partitions of the trace object corresponding to the particular execution, including a first partition corresponding to a first subset of the plurality of events, wherein the first partition comprises a header portion and a data portion, wherein the header portion comprises a representation of one or more event chains, wherein a given event chain identifies a particular sequence of events which occurred during the particular execution, wherein the data portion (a) includes one or more pointers to respective event chain representations stored in the header and (b) does not include event identifiers of events which occurred in the particular execution, and wherein storing the trace object comprises storing respective persistent representations of the plurality of partitions. |
| Claim: | 5. The method as recited in claim 4 , wherein the data portion includes one or more compressed events records including a first compressed event record, wherein the first compressed events record includes a pointer to a particular event of an event chain stored in the header, followed by a bit sequence indicative of the number of times that the successor events of the particular event which are indicated in the particular event chain occurred in the particular execution. |
| Claim: | 6. The method as recited in claim 5 , wherein a first subsequence of the bit sequence indicates that one or more other bits of the bit sequence which occur after the first subsequence represent a successor event repeat count. |
| Claim: | 7. The method as recited in claim 1 , further comprising performing, at the one or more computing devices: generating, using the trace object, a visualization data set comprising a plurality of nodes representing respective execution units of at least a portion of the execution, wherein an individual execution unit corresponds to one or more events, and wherein the generating comprises pruning, from a tree representation of the execution, a node representing a particular execution unit which meets a partition locality criterion; and causing at least a subset of the plurality of nodes, and one or more source code sections corresponding to respective nodes of the subset, to be displayed via an interactive interface. |
| Claim: | 8. One or more non-transitory computer-accessible storage media storing program instructions that when executed on or across one or more processors cause the one or more processors to: determine that a trace object corresponding to a particular execution of a program is to be created; generate respective sequence frequency records with respect to one or more events to be represented in the trace object, wherein a sequence frequency record indicates, with respect to a particular event, a set of one or more successor events of the particular event which meet a frequency-of-occurrence threshold, and wherein the sequence frequency records track respective counts of the one or more successor events occurring immediately after the particular event; and store the trace object, wherein at least a portion of the trace object is produced using the respective sequence frequency records. |
| Claim: | 9. The one or more non-transitory computer-accessible storage media as recited in claim 8 , storing further program instructions that when executed on or across the one or more processors further cause the one or more processors to: generate, based at least in part on one or more sequence frequency records of the respective sequence frequency records, an event chain representing at least an occurrence of a first event immediately prior to a second event, wherein an indication of the event chain is included in the portion of the trace object. |
| Claim: | 10. The one or more non-transitory computer-accessible storage media as recited in claim 9 , wherein the indication of the event chain comprises a numeric identifier of the first event, followed by a delta value, wherein the delta value indicates a difference between a numeric identifier of the second event and the numeric identifier of the first event. |
| Claim: | 11. The one or more non-transitory computer-accessible storage media as recited in claim 8 , storing further program instructions that when executed on or across the one or more processors further cause the one or more processors to: construct a plurality of partitions of the trace object corresponding to the particular execution, including a first partition corresponding to a first subset of the plurality of events, wherein the first partition comprises a header portion and a data portion, wherein the header portion comprises a representation of one or more event chains, wherein a given event chain identifies a particular sequence of events which occurred during the particular execution, wherein the data portion (a) includes one or more pointers to respective event chain representations stored in the header and (b) does not include event identifiers of events which occurred in the particular execution, and wherein the stored trace object comprises respective persistent representations of the plurality of partitions. |
| Claim: | 12. The one or more non-transitory computer-accessible storage media as recited in claim 11 , wherein the data portion includes one or more compressed events records including a first compressed event record, wherein the first compressed events record includes a pointer to a particular event of an event chain stored in the header, followed by a bit sequence indicative of the number of times that the successor events of the particular event which are indicated in the particular event chain occurred in the particular execution. |
| Claim: | 13. The one or more non-transitory computer-accessible storage media as recited in claim 12 , wherein a first subsequence of the bit sequence indicates that one or more other bits of the bit sequence which occur after the first subsequence represent a successor event repeat count. |
| Claim: | 14. The one or more non-transitory computer-accessible storage media as recited in claim 8 , storing further program instructions that when executed on or across the one or more processors further cause the one or more processors to: generate, using the trace object, a visualization data set comprising a plurality of nodes representing respective execution units of at least a portion of the execution, wherein an individual execution unit corresponds to one or more events, and wherein the generation of the visualization data set comprises pruning, from a tree representation of the execution, a node representing a particular execution unit which meets a partition locality criterion; and cause at least a subset of the plurality of nodes, and one or more source code sections corresponding to respective nodes of the subset, to be displayed via an interactive interface. |
| Claim: | 15. A system, comprising: one or more computing devices; wherein the one or more computing devices include instructions that upon execution on or across one or more processors cause the one or more processors to: determine that a trace object corresponding to a particular execution of a program is to be created; generate respective sequence frequency records with respect to one or more events to be represented in the trace object, wherein a sequence frequency record indicates, with respect to a particular event, a set of one or more successor events of the particular event which meet a frequency-of-occurrence threshold, and wherein the sequence frequency records track respective counts of the one or more successor events occurring immediately after the particular event; and store the trace object, wherein at least a portion of the trace object is produced using the respective sequence frequency records. |
| Claim: | 16. The system as recited in claim 15 , wherein the one or more computing devices include further instructions that upon execution on or across the one or more processors further cause the one or more processors to: generate, based at least in part on one or more sequence frequency records of the respective sequence frequency records, an event chain representing at least an occurrence of a first event immediately prior to a second event, wherein an indication of the event chain is included in the portion of the trace object. |
| Claim: | 17. The system as recited in claim 16 , wherein the indication of the event chain comprises a numeric identifier of the first event, followed by a delta value, wherein the delta value indicates a difference between a numeric identifier of the second event and the numeric identifier of the first event. |
| Claim: | 18. The system as recited in claim 15 , wherein the one or more computing devices include further instructions that upon execution on or across the one or more processors further cause the one or more processors to: construct a plurality of partitions of the trace object corresponding to the particular execution, including a first partition corresponding to a first subset of the plurality of events, wherein the first partition comprises a header portion and a data portion, wherein the header portion comprises a representation of one or more event chains, wherein a given event chain identifies a particular sequence of events which occurred during the particular execution, wherein the data portion (a) includes one or more pointers to respective event chain representations stored in the header and (b) does not include event identifiers of events which occurred in the particular execution, and wherein the stored trace object comprises respective persistent representations of the plurality of partitions. |
| Claim: | 19. The system as recited in claim 18 , wherein the data portion includes one or more compressed events records including a first compressed event record, wherein the first compressed events record includes a pointer to a particular event of an event chain stored in the header, followed by a bit sequence indicative of the number of times that the successor events of the particular event which are indicated in the particular event chain occurred in the particular execution. |
| Claim: | 20. The system as recited in claim 19 , wherein a first subsequence of the bit sequence indicates that one or more other bits of the bit sequence which occur after the first subsequence represent a successor event repeat count. |
| Patent References Cited: | 5889993 March 1999 Kroeger 6134676 October 2000 VanHuben 6189141 February 2001 Benitez 6327699 December 2001 Larus et al. 7251809 July 2007 Barclay et al. 7802149 September 2010 Cruickshank et al. 7827539 November 2010 Wygodny et al. 8799927 August 2014 Taylor 9658941 May 2017 Voccio et al. 9658943 May 2017 Gounares 10025412 July 2018 Shepelev 2001/0034598 October 2001 Swoboda 2001/0043122 November 2001 Swoboda 2005/0091643 April 2005 Ekanadham 2006/0195444 August 2006 Sastry 2006/0259827 November 2006 Sohm 2008/0126828 May 2008 Girouard 2008/0162272 July 2008 Huang 2009/0007075 January 2009 Edmark et al. 2009/0089800 April 2009 Jones 2010/0333071 December 2010 Kuiper 2011/0119654 May 2011 Miller et al. 2011/0197179 August 2011 Kratochvil 2011/0227925 September 2011 De Pauw 2012/0324423 December 2012 Khan et al. 2013/0047140 February 2013 Shann et al. 2014/0244986 August 2014 Balasundaram 2015/0212928 July 2015 Gounares 2015/0234730 August 2015 Puthuff et al. 2016/0124728 May 2016 Mahaffey 2017/0075792 March 2017 Udvuleanu et al. 2018/0129589 May 2018 O'Dowd 2018/0307544 October 2018 Chen 2019/0303270 October 2019 Hoermann |
| Other References: | “Eclipse Diver—Dynamic Interactive View for Reverse Engineering”, Retrieved from URL: https://eclipsediver.wordpress.com/docs/ on Jan. 5, 2018, pp. 1-55. cited by applicant “Navigating through Code with the Debugger”, Retrieved from URL: https://msdn.microsoft.com/en-us/library/y740d9d3.aspx on Jan. 5, 2018, pp. 1-8. cited by applicant “What is Chronon?”, Retrieved from URL: http://chrononsystems.com/what-is-chronon/technology on Jan. 5, 2018, pp. 1-3. cited by applicant |
| Primary Examiner: | Wu, Daxin |
| Attorney, Agent or Firm: | Kowert, Robert C. Kowert, Hood, Munyon, Rankin & Goetzel, P.C. |
| Dokumentencode: | edspgr.11494287 |
| Datenbank: | USPTO Patent Grants |
| Abstract: | Indications of a plurality of events whose occurrence is detected in a particular execution of a program are obtained. One or more partitions of a trace object corresponding to the execution are constructed, including a first partition corresponding to a first subset of the events. The first partition comprises a header portion which includes a compressed representation of one or more event chains, and a data portion comprising a compressed events record indicating an occurrence, during the execution, of a particular sequence of events indicated by an event chain. The trace object is stored. |
|---|