Abstract
Dynamic program analysis is a very popular technique for analysis of computer programs. It analyses the properties of a program while it is executing. Dynamic analysis has been found to be more precise than static analysis in handling run-time features like dynamic binding, polymorphism, threads etc. Therefore much emphasis is now being given on dynamic analysis of programs ( instead of static analysis) involving the above mentioned features. Various techniques have been devised over the past several years for the dynamic analysis of programs. This paper provides an overview of the existing techniques and tools for the dynamic analysis of programs. Further, the paper compares these techniques for their merits and demerits and emphasizes the importance of each technique.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Ball, T.: The concept of dynamic analysis. In: Wang, J., Lemoine, M. (eds.) ESEC 1999 and ESEC-FSE 1999. LNCS, vol. 1687, p. 216. Springer, Heidelberg (1999)
Ball, T., Larus, J.R.: Efficient path profiling. In: Proceedings of MICRO 1996, pp. 46–57 (1996)
Baxter, I.: DMS: Program Transformations for Practical Scalable Software Evolution. In: Proceedings of the 26th International Conference on Software Engineering, pp. 625–634 (2004)
Binder, W., Hulaas, J., Moret, P., Villazón, A.: Platform-independent profiling in a virtual execution environment. Software: Practice and Experience 39(1), 47–79 (2009)
Binkley, D.: Source Code Analysis: A Road Map. Future of Software Engineering (2007)
Bodden, E., Havelund, K.: Aspect-oriented Race Detection in Java. IEEE Transactions on Software Engineering 36(4), 509–527 (2010)
Boner, J.: AspectWerkz - Dynamic AOP for Java. In: Proceeding of the 3rd International Conference on Aspect- Oriented Development (AOSD 2004), Lancaster, UK (2004)
Bruneton, E., Lenglet, R., Coupaye, T.: ASM: A code manipulation tool to implement adaptable systems. In: Adaptable and Extensible Component Systems, Grenoble, France (2002)
Buck, B., Hollingsworth, J.K.: An API for Runtime Code Patching. International Journal of High Performance Computing Applications, 317–329 (2000)
Chiba, S.: Load-time structural reflection in java. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, p. 313. Springer, Heidelberg (2000)
Dahm, M.: Byte code engineering. In: Java-Information-Tage(JIT 1999) (1999), http://jakarta.apache.org/bcel/
Zheng, C.-H., Jensen, E., Mitchell, N., Ng, T.-Y., Yang, J.: Visualizing the Execution of Java Programs. In: Diehl, S. (ed.) Dagstuhl Seminar 2001. LNCS, vol. 2269, pp. 151–162. Springer, Heidelberg (2002)
Dieckmann, S., Hölzle, U.: A study of the allocation behavior of the SPECjvm98 Java benchmarks. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 92–115. Springer, Heidelberg (1999)
Dufour, B., Goard, C., Hendren, L., de Moor, O., Sittampalam, G., Verbrugge, C.: Measuring the dynamic behaviour of AspectJ programs. In: Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, pp. 150–169. ACM Press (2004)
Dufour, B., Hendren, L., Verbrugge, C.: *J: A tool for dynamic analysis of Java programs. In: Proc 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 306–307. ACM Press (2003)
Ernst, M.D.: Dynamically Discovering Likely Program Invariants. (PhD Dissertation), University of Washington, Dept. of Comp. Sci. & Eng., Seattle, Washington (2000)
Ernst, M.D.: Static and Dynamic Analysis: Synergy and Duality. In: Proceedings of the 5th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (2004)
Gupta, V., Chhabra, J.K.: Measurement of Dynamic Metrics using Dynamic Analysis of Programs. In: Applied Computing Conference, Turkey (2008)
Hangal, S., Lam, M.S.: Tracking Down Software Bugs using Automatic Anomaly Detection. In: ICSE 2002 (2002)
Hilyard, J.: No Code Can Hide from the Profiling API in the.NET Framework 2.0. MSDN Magazine (January 2005), http://msdn.microsoft.com/msdnmag/issues/05/01/CLRProfiler/
Hilsdale, E., Hugunin, J.: Advice weaving in AspectJ. In: Lieberherr, K. (ed.) Aspect-oriented Software Development (AOSD 2004). ACM Press (2004)
Hollingsworth, J.K.: MDL: A language and compiler for dynamic instrumentation. In: Proceedings of International conference on Parallel architecture and compilation techniques (1997)
IBM Corporation. Jikes Bytecode Toolkit (2000), http://www-128.ibm.com/developerworks/opensource/
Jackson, D., Rinard, M.: Software Analysis: A Road Map. IEEE Transaction on Software Engineering (2000)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Lindskov Knudsen, J. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–355. Springer, Heidelberg (2001)
Kiczales, G., et al.: Aspect-oriented programming. In: Proc of the 11th European Conference on Object-Oriented Programming, Finland. LNCS, vol. 1241, pp. 220–242. Springer (1997)
Larus, J.R., Ball, T.: Rewriting executable to measure program behavior. Software:Practice and Experience 24(2), 197–218 (1994)
Larus, J.R., Schnarr, E.: EEL: Machine independent executable editing. In: PLDI 1995 (1995)
Lee, H.B., Zorn, B.G.: BIT: A tool for instrumenting Java bytecode. In: Proceedings of USENIX Symposium on Internet Technologies and Systems, pp. 73–82 (1997)
Maebe, J., Buytaert, D., Eeckhout, L., De Bosschere, K.: Javana: A System for Building Customized Java Program Analysis Tools. In: OOPSLA 2006 (2006)
Mines de Nantes, E.: No Java without Caffeine. In: ASE 2002 (2002)
Mock, M.: Dynamic Analysis from the Bottom Up. In: 25th ICSE Workshop on Dynamic Analysis (2003)
Naik, M.C.: A static and dynamic program analysis framework for Java (2010), http://chord.stanford.edu/
Nimmer, J.W., Ernst, M.D.: Automatic generation and checking of program specifications. Technical Report 823, MIT Lab for Computer Science, USA (2001)
Nethercote, N., Seward, J.: Valgrind: A framework for heavyweight dynamic binary instrumentation. In: Proc. of ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI (2007)
Parasoft Inc. Automating C/C++ Runtime Error Detection With Parasoft Insure++. White paper (2006)
Pearce, D.J., Webster, M., Berry, R., Kelly, P.H.J.: Profiling with AspectJ. Software: Practice and Experience (2007)
Rastings, R., Joyce, B.: Purify: Fast Detection of Memory Leaks and Access Errors. Winter Usenix Conference (1992)
Reiss, S.P.: Efficient monitoring and display of thread state in java. In: Proceedings of IEEE International Workshop on Program Comprehension, St. Louis, MO, pp. 247–256 (2005)
Skatelsky, A., et al.: Dynamic Analysis of Microsoft Windows Applications. In: International Symposium on Performance Analysis of Software and System (2010)
Singh, P.: Design and validation of dynamic metrics for object-oriented software systems. (PhD Thesis), Guru Nanak Dev University, Amritsar, India (2009)
Spinczyk, O., Lohmann, D., Urban, M.: Aspect C++: an AOP Extension for C++. Software Developer’s Journal, 68–76 (2005)
Srivastava, A., Eustace, A.: ATOM: A system for building customized program analysis tools. SIGPLAN Not 39(4), 528–539 (2004)
Sun Microsystems Inc. JVM Tool Interface, JVMTI (2004), http://java.sun.com/javase/6/docs/technotes/guides/jvmti/index.html
Sun Microsystems Inc. Java Virtual Machine Profiler Interface, JVMPI (2004), http://java.sun.com/j2se/1.4.2/docs/guide/jvmpi/
Sun Microsystem Inc. Java Platform debug Architecture (2004), http://java.sun.com/javase/6/docs/technotes/guides/jpda/
Waddington, D.G., Yao, B.: High Fidelity C++ Code Transformation. In: Proceedings of the 5th Workshop on Language Descriptions, Tools and Applications, Edinburgh, Scotland, UK (2005)
Waddington, D.G.: Dynamic Analysis and Profiling of Multi-threaded Systems. In: Taiko, P.F. (ed.) Designing Software-Intensive Systems: Methods and Principles. Information Science Reference Publishing (2008) ISBN 978-1-59904-699-0
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Gosain, A., Sharma, G. (2015). A Survey of Dynamic Program Analysis Techniques and Tools. In: Satapathy, S., Biswal, B., Udgata, S., Mandal, J. (eds) Proceedings of the 3rd International Conference on Frontiers of Intelligent Computing: Theory and Applications (FICTA) 2014. Advances in Intelligent Systems and Computing, vol 327. Springer, Cham. https://doi.org/10.1007/978-3-319-11933-5_13
Download citation
DOI: https://doi.org/10.1007/978-3-319-11933-5_13
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-11932-8
Online ISBN: 978-3-319-11933-5
eBook Packages: EngineeringEngineering (R0)