Effective whole-program analysis in the presence of pointers

作者: Darren C. Atkinson , William G. Griswold

DOI: 10.1145/288195.288217

关键词: Program behaviorC programming languageSoftware systemLocal variableProgram slicingProgram analysisComputer scienceProgramming language

摘要: Understanding large software systems is difficult. Traditionally, automated tools are used to assist program understanding. However, the representations constructed by these often require prohibitive time and space. Demand-driven techniques can be reduce requirements. use of pointers in modern languages introduces additional problems that do not integrate well with techniques. We present new for effectively coping written C programming language our implement a slicing tool.First, we fast, flow-insensitive, points-to analysis before traditional data-flow analysis. Second, allow user parameterize so resulting slices more closely match actual behavior. Such information cannot easily obtained tool or might otherwise deemed unsafe. Finally, equations dealing local variables recursive programs. These select an arbitrary amount calling context order better trade performance precision.To validate techniques, empirical results using slicer on The indicate cost-effective programs feasible

参考文章(20)
Bjarne Stroustrup, The C++ programming language (2nd ed.) Addison-Wesley Longman Publishing Co., Inc.. ,(1991)
Ravi Sethi, Jeffrey D. Ullman, Alfred V. Aho, Compilers: Principles, Techniques, and Tools ,(1986)
Bjarne Steensgaard, Points-to analysis by type inference of programs with structures and unions Lecture Notes in Computer Science. pp. 136- 150 ,(1996) , 10.1007/3-540-61053-7_58
Laszlo A Belady, MM Lehman, None, Program Evolution: Processes of Software Change ,(1985)
Jens Knoop, Bernhard Steffen, The Interprocedural Coincidence Theorem compiler construction. pp. 125- 140 ,(1992) , 10.1007/3-540-55984-1_13
Marc Shapiro, Susan Horwitz, Fast and accurate flow-insensitive points-to analysis symposium on principles of programming languages. pp. 1- 14 ,(1997) , 10.1145/263699.263703
William Landi, Barbara G. Ryder, Sean Zhang, Interprocedural modification side effect analysis with pointer aliasing Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation - PLDI '93. ,vol. 28, pp. 56- 67 ,(1993) , 10.1145/155090.155096
William G. Griswold, Darren C. Atkinson, Managing design trade-offs for a program understanding and transformation tool Journal of Systems and Software. ,vol. 30, pp. 99- 116 ,(1995) , 10.1016/0164-1212(94)00119-8
Evelyn Duesterwald, Rajiv Gupta, Mary Lou Soffa, Demand-driven computation of interprocedural data flow Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '95. pp. 37- 48 ,(1995) , 10.1145/199448.199461
Gleb N. Naumovich, Lori A. Clarke, Leon J. Osterweil, Verification of communication protocols using data flow analysis Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering - SIGSOFT '96. ,vol. 21, pp. 93- 105 ,(1996) , 10.1145/239098.239114