Property-aware program sampling

Monitoring or profiling programs provides us with an understanding for its further improvement and analysis. Typically, for monitoring or profiling, the program is instrumented to execute additional code that collects necessary data. However, a widely-understood problem with this approach is that program instrumentation can result in significant execution overhead. A number of techniques based on statistical sampling have been proposed to reduce this overhead. Statistical sampling based instrumentation techniques, although effective in reducing the overall overhead, often lead to poor coverage or incomplete results. The contribution of this work is a profiling technique that we call property-aware program sampling. Our sampling technique uses program slicing to reduce the scope of instrumentation and slice fragments to decompose large program slices into more manageable, logically related parts for instrumentation, thereby improving the scalability of monitoring and profiling techniques. The technical underpinnings of our work include the notion of slice fragments and an efficient technique for computing a reduced set of slice fragments.

[1]  A. Aiken,et al.  Distributed Program Sampling , 2002 .

[2]  Michael I. Jordan,et al.  Bug isolation via remote program sampling , 2003, PLDI.

[3]  Matthew Arnold,et al.  A framework for reducing the cost of instrumented code , 2001, PLDI '01.

[4]  G. Nemhauser,et al.  Integer Programming , 2020 .

[5]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[6]  Gerald L. Thompson,et al.  An Algorithm for Finding a Minimum Equivalent Graph of a Digraph , 1969, J. ACM.

[7]  Mary Jean Harrold,et al.  Selective path profiling , 2002, PASTE '02.

[8]  M MoylesDennis,et al.  An Algorithm for Finding a Minimum Equivalent Graph of a Digraph , 1969 .

[9]  Clifford Stein,et al.  Introduction to Algorithms, 2nd edition. , 2001 .

[10]  David I. August,et al.  Shape analysis with inductive recursion synthesis , 2007, PLDI '07.

[11]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[12]  Lance M. Berc,et al.  Continuous profiling: where have all the cycles gone? , 1997, ACM Trans. Comput. Syst..

[13]  Saumya K. Debray,et al.  Profile-guided code compression , 2002, PLDI '02.

[14]  Madeline Diep,et al.  Profiling deployed software: assessing strategies and testing opportunities , 2005, IEEE Transactions on Software Engineering.

[15]  Matthias Hauswirth,et al.  Low-overhead memory leak detection using adaptive statistical profiling , 2004, ASPLOS XI.

[16]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[17]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[18]  Vasanth Bala,et al.  Dynamo: a transparent dynamic optimization system , 2000, SIGP.

[19]  Alessandro Orso,et al.  Gamma system: continuous evolution of software after deployment , 2002, ISSTA '02.

[20]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[21]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[22]  Raúl A. Santelices,et al.  Subsumption of program entities for efficient coverage and monitoring , 2006, SOQUA '06.

[23]  John T. Stasko,et al.  Visualization of test information to assist fault localization , 2002, ICSE '02.

[24]  Gregg Rothermel,et al.  Supporting Controlled Experimentation with Testing Techniques: An Infrastructure and its Potential Impact , 2005, Empirical Software Engineering.

[25]  Ronald L. Rivest,et al.  Introduction to Algorithms, Second Edition , 2001 .

[26]  Samir Khuller,et al.  Approximating the minimum equivalent digraph , 1994, SODA '94.

[27]  Manu Sridharan,et al.  Thin slicing , 2007, PLDI '07.

[28]  Baowen Xu,et al.  A brief survey of program slicing , 2005, SOEN.

[29]  David S. Johnson,et al.  Approximation algorithms for combinatorial problems , 1973, STOC.

[30]  Grigore Rosu,et al.  Mop: an efficient and generic runtime verification framework , 2007, OOPSLA.

[31]  Alessandro Orso,et al.  Monitoring deployed software using software tomography , 2002, PASTE '02.

[32]  Matthew B. Dwyer,et al.  Adaptive Online Program Analysis , 2007, 29th International Conference on Software Engineering (ICSE'07).

[33]  Thomas W. Reps,et al.  Illustrating interference in interfering versions of programs , 1989, SCM.

[34]  Matthew B. Dwyer,et al.  Bandera: extracting finite-state models from Java source code , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[35]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[36]  Matthew B. Dwyer,et al.  Slicing Software for Model Construction , 2000, High. Order Symb. Comput..