Striking a new balance between program instrumentation and debugging time

作者: Olivier Crameri , Ricardo Bianchini , Willy Zwaenepoel

DOI: 10.1145/1966445.1966464

关键词: Operating systemOverhead (computing)DebuggingStatic analysisComputer scienceSymbolic executionSecurity bugInstrumentation (computer programming)Distributed computingShotgun debuggingBranch trace

摘要: Although they are helpful in many cases, state-of-the-art bug reporting systems may impose excessive overhead on users, leak private information, or provide little help to the developer locating problem. In this paper, we explore a new approach that uses partial logging of branches record path leading bug. We use static and dynamic analysis (both isolation tandem) identify need be logged. When is encountered, system symbolic execution along branch trace reproduce problem find set inputs activate The log drastically reduces number paths would otherwise explored by engine. study tradeoff between instrumentation debugging time using an open-source Web server, diff utility, four coreutils programs. Our results show method combines strikes best compromise, as it limits both reproduction time. conclude our techniques represent important step improving making more practical for reproduction.

参考文章(18)
Spiros Xanthos, Shan Lu, Yuanyuan Zhou, Joseph Tucek, Chengdu Huang, Automatic on-line failure diagnosis at the end-user site hot topics in system dependability. pp. 4- 4 ,(2006)
Rekha Bachwani, Olivier Crameri, Dejan Kostic, Ricardo Bianchini, Willy Zwaenepoel, Tim Brecht, Oasis: Concolic Execution Driven by Test Suites and Code Modifications ,(2009)
Rui Wang, Zhuowei Li, XiaoFeng Wang, Panalyst: privacy-aware remote error analysis on commodity software usenix security symposium. pp. 291- 306 ,(2008)
Cristian Cadar, Daniel Dunbar, Dawson Engler, KLEE: unassisted and automatic generation of high-coverage tests for complex systems programs operating systems design and implementation. pp. 209- 224 ,(2008) , 10.5555/1855741.1855756
Zhenyu Guo, Zhilei Xu, Xuezheng Liu, Xi Wang, Ming Wu, Zheng Zhang, Jian Tang, M. Frans Kaashoek, R2: an application-level kernel for record and replay operating systems design and implementation. pp. 193- 208 ,(2008) , 10.5555/1855741.1855755
Koushik Sen, Darko Marinov, Gul Agha, CUTE: a concolic unit testing engine for C foundations of software engineering. ,vol. 30, pp. 263- 272 ,(2005) , 10.1145/1081706.1081750
Andrew Ayers, Richard Schooler, Chris Metcalf, Anant Agarwal, Junghwan Rhee, Emmett Witchel, TraceBack: first fault diagnosis by reconstruction of distributed control flow programming language design and implementation. ,vol. 40, pp. 201- 212 ,(2005) , 10.1145/1064978.1065035
Kirk Glerum, Kinshuman Kinshumann, Steve Greenberg, Gabriel Aul, Vince Orgovan, Greg Nichols, David Grant, Gretchen Loihle, Galen Hunt, Debugging in the (very) large: ten years of implementation and experience symposium on operating systems principles. pp. 103- 116 ,(2009) , 10.1145/1629575.1629586
Patrice Godefroid, Adam Kiezun, Michael Y. Levin, Grammar-based whitebox fuzzing Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation - PLDI '08. ,vol. 43, pp. 206- 215 ,(2008) , 10.1145/1375581.1375607
David Mosberger, Tai Jin, httperf—a tool for measuring web server performance measurement and modeling of computer systems. ,vol. 26, pp. 31- 37 ,(1998) , 10.1145/306225.306235