Abstract
Call traces, i.e., sequences of function calls and returns, are fundamental to a wide range of program analyses such as bug reproduction, fault diagnosis, performance analysis, and many others. The conventional approach to collect call traces that instruments each function call and return site incurs large space and time overhead. Our approach aims at reducing the recording overheads by instrumenting only a small amount of call sites while keeping the capability of recovering the full trace. We propose a call trace model and a logged call trace model based on an LL(1) grammar, which enables us to define the criteria of a feasible solution to call trace collection. Based on the two models, we prove that to collect call traces with minimal instrumentation is an NP-hard problem. We then propose an efficient approach to obtaining a suboptimal solution. We implemented our approach as a tool Casper and evaluated it using the DaCapo benchmark suite. The experiment results show that our approach causes significantly lower runtime (and space) overhead than two state-of-the-arts approaches.
- A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools (2Nd Edition). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 2006. Google Scholar
Digital Library
- G. Ammons, T. Ball, and J. R. Larus. Exploiting Hardware Performance Counters with Flow and Context Sensitive Profiling. In PLDI, 1997. Google Scholar
Digital Library
- G. Ammons, J.-D. Choi, M. Gupta, and N. Swamy. Finding and removing performance bottlenecks in large systems. In ECOOP, 2004.Google Scholar
Cross Ref
- T. Ball and J. R. Larus. Optimally Profiling and Tracing Programs. TOPLAS, 1994. Google Scholar
Digital Library
- T. Ball and J. R. Larus. Efficient Path Profiling. In MICRO, 1996. Google Scholar
Digital Library
- S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, et al. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA, 2006. Google Scholar
Digital Library
- M. D. Bond and K. S. McKinley. Probabilistic calling context. In ACM SIGPLAN Notices, 2007. Google Scholar
Digital Library
- M. D. Bond, G. Z. Baker, and S. Z. Guyer. Breadcrumbs: Efficient Context Sensitivity for Dynamic Bug Detection Analyses. In PLDI, 2010. Google Scholar
Digital Library
- M. Christodorescu, S. Jha, and C. Kruegel. Mining specifications of malicious behavior. In ESEC/FSE, 2007. Google Scholar
Digital Library
- R. F. Cmelik, S. I. Kong, D. R. Ditzel, and E. J. Kelly. An analysis of MIPS and SPARC instruction set utilization on the SPEC benchmarks. Springer, 1991.Google Scholar
Digital Library
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, et al. Introduction to algorithms, volume 2. MIT press Cambridge, 2001. Google Scholar
Digital Library
- P. Deutsch. Rfc1951, deflate compressed data format specification, 1996. Google Scholar
Digital Library
- J. A. Fisher, J. R. Ellis, J. C. Ruttenberg, and A. Nicolau. Parallel processing: A smart compiler and a dumb machine. In ACM SIGPLAN Notices, 1984. Google Scholar
Digital Library
- M. Fowler. Refactoring: Improving the design of existing code, 1997.Google Scholar
- M. Gabel and Z. Su. Javert: Fully Automatic Mining of General Temporal Properties from Dynamic Traces. In FSE, 2008. Google Scholar
Digital Library
- J. Ha, M. Arnold, S. M. Blackburn, and K. S. McKinley. A concurrent dynamic analysis framework for multicore hardware. In ACM SIGPLAN Notices, 2009. Google Scholar
Digital Library
- S. Han, Y. Dang, S. Ge, D. Zhang, and T. Xie. Performance debugging in the large via mining millions of stack traces. In ICSE, 2012. Google Scholar
Digital Library
- S. A. Hofmeyr, S. Forrest, and A. Somayaji. Intrusion detection using sequences of system calls. Journal of computer security, 1998. Google Scholar
Digital Library
- D. F. Jerding, J. T. Stasko, and T. Ball. Visualizing interactions in program executions. In ICSE, 1997. Google Scholar
Digital Library
- L. Jiang and Z. Su. Context-aware statistical debugging: From bug predictors to faulty control flow paths. In ASE, 2007. Google Scholar
Digital Library
- W. Jin and A. Orso. BugRedux: Reproducing field failures for in-house debugging. In ICSE, 2012. Google Scholar
Digital Library
- V. Krunic, E. Trumpler, and R. Han. Nodemd: Diagnosing node-level faults in remote wireless sensor systems. In MobiSys, 2007. Google Scholar
Digital Library
- P. Lam, F. Qian, O. Lhotak, and E. Bodden. Soot: a java optimization framework. See http://www. sable. mcgill. ca/soot, 2002.Google Scholar
- J. R. Larus. Abstract execution: A technique for efficiently tracing programs. Software: Practice and Experience, 1990. Google Scholar
Digital Library
- J. R. Larus. Whole program paths. In PLDI, 1999. Google Scholar
Digital Library
- W. Lee and S. J. Stolfo. Data mining approaches for intrusion detection. In Usenix Security, 1998. Google Scholar
Digital Library
- B. Liblit, A. Aiken, A. X. Zheng, and M. I. Jordan. Bug isolation via remote program sampling. ACM SIGPLAN Notices, 2003. Google Scholar
Digital Library
- B. Liblit, M. Naik, A. X. Zheng, A. Aiken, and M. I. Jordan. Scalable statistical bug isolation. In ACM SIGPLAN Notices, 2005. Google Scholar
Digital Library
- H. B. Mann and D. R. Whitney. On a test of whether one of two random variables is stochastically larger than the other. The annals of mathematical statistics, 1947.Google Scholar
- D. Melski and T. Reps. Interprocedural path profiling. In CC, 1999. Google Scholar
Digital Library
- H. Mi, H. Wang, Y. Zhou, M. R.-T. Lyu, and H. Cai. Toward finegrained, unsupervised, scalable performance diagnosis for production cloud computing systems. IEEE Transactions on Parallel & Distributed Systems, 2013. Google Scholar
Digital Library
- B. P. Miller and J.-D. Choi. A mechanism for efficient debugging of parallel programs. ACM, 1988.Google Scholar
- T. Mytkowicz, D. Coughlin, and A. Diwan. Inferred call path profiling. In OOPSLA, 2009. Google Scholar
Digital Library
- A. Nistor and L. Ravindranath. Suncat: Helping developers understand and predict performance problems in smartphone applications. In ISSTA, 2014. Google Scholar
Digital Library
- P. Ohmann and B. Liblit. Lightweight control-flow instrumentation and postmortem analysis in support of debugging. In ASE, 2013.Google Scholar
Digital Library
- A. Pathak, Y. C. Hu, and M. Zhang. Where is the energy spent inside my app?: fine grained energy accounting on smartphones with eprof. In EuroSys, 2012. Google Scholar
Digital Library
- M. Pradel and T. R. Gross. Automatic generation of object usage specifications from large method traces. In ASE ’09, pages 371–382, Washington, DC, USA, 2009. IEEE Computer Society. Google Scholar
Digital Library
- M. Pradel and T. R. Gross. Leveraging test generation and specification mining for automated bug detection without false positives. In ICSE ’12, pages 288–298, Piscataway, NJ, USA, 2012. IEEE Press. Google Scholar
Digital Library
- R. Sekar, M. Bendre, D. Dhurjati, and P. Bollineni. A fast automatonbased method for detecting anomalous program behaviors. In S&P, 2001. Google Scholar
Digital Library
- M. Serrano and X. Zhuang. Building approximate calling context from partial call traces. In CGO, 2009. Google Scholar
Digital Library
- W. N. Sumner, Y. Zheng, D. Weeratunge, and X. Zhang. Precise calling context encoding. TSE, 2012. Google Scholar
Digital Library
- V. V. Vazirani. Approximation Algorithms. Springer-Verlag New York, Inc., New York, NY, USA, 2001. ISBN 3-540-65367-8. Google Scholar
Digital Library
- R. Wu, H. Zhang, S.-C. Cheung, and S. Kim. Crashlocator: locating crashing faults based on crash stacks. In ISSTA, 2014. Google Scholar
Digital Library
- X. Yu, S. Han, D. Zhang, and T. Xie. Comprehending performance from real-world execution traces: A device-driver case. In ASPLOS ’14, 2014. Google Scholar
Digital Library
- C. Yuan, N. Lao, J.-R. Wen, J. Li, Z. Zhang, Y.-M. Wang, and W.-Y. Ma. Automated known problem diagnosis with event traces. In ACM SIGOPS Operating Systems Review, 2006. Google Scholar
Digital Library
- Q. Zeng, J. Rhee, H. Zhang, N. Arora, G. Jiang, and P. Liu. Deltapath: Precise and scalable calling context encoding. In CGO, 2014. Google Scholar
Digital Library
- Q. Zhao, I. Cutcutache, and W.-F. Wong. Pipa: Pipelined profiling and analysis on multicore systems. TACO, 2010. Google Scholar
Digital Library
- X. Zhuang, M. J. Serrano, H. W. Cain, and J.-D. Choi. Accurate, efficient, and adaptive calling context profiling. In PLDI, 2006. Google Scholar
Digital Library
Index Terms
Casper: an efficient approach to call trace collection
Recommendations
Casper: an efficient approach to call trace collection
POPL '16: Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming LanguagesCall traces, i.e., sequences of function calls and returns, are fundamental to a wide range of program analyses such as bug reproduction, fault diagnosis, performance analysis, and many others. The conventional approach to collect call traces that ...
An efficient on-the-fly cycle collection
CC'05: Proceedings of the 14th international conference on Compiler ConstructionA reference-counting garbage collector cannot reclaim unreachable cyclic structures of objects. Therefore, reference-counting collectors either use a backup tracing collector infrequently, or employ a cycle collector to reclaim cyclic structures. We ...
Dynamically Instrumenting the QEMU Emulator for Linux Process Trace Generation with the GDB Debugger
Special Issue on Risk and Trust in Embedded Critical Systems, Special Issue on Real-Time, Embedded and Cyber-Physical Systems, Special Issue on Virtual Prototyping of Parallel and Embedded Systems (ViPES)In software debugging, trace generation techniques are used to resolve highly complex bugs. However, the emulators increasingly used for embedded software development do not yet offer the types of trace generation infrastructure available in hardware. ...






Comments