This paper presents two approaches to multi-procedure program dynamic decomposition. These methods can be viewed as tools towards program debugging and dynamic reverse engineering which can help programmers to fault localization by reducing the research space susceptible to cover the fault. A binary relation is used to represent a dynamic program that consists of all the instruction occurrences executed on some input during a particular execution of the original program. The dynamic program is decomposed into portions of program called "dynamic program threads" which describe the dynamic behavior of the original program. A dynamic program thread contains all the executed statements that really affect one or some given variables during a real program execution. In the second approach, we introduce the notion of lattice of dynamitic program threads, called dynamic lattice, which defines the entire dynamic behavior of the executed program. It is also possible to describe a partial dynamic behavior of the underlying program with regard to some occurrence in the program execution path. The size of the obtained lattice, defined by the number of its dynamic program threads, increases as we go on to another occurrence. So, we introduce the concept of increments! dynamic lattice which becomes saturate if all the instruction occurrences are taken into account. The saturate dynamic lattice produces a graphical representation including all possible dynamic program threads and relationships between them,
Index Terms:
Software engineering, debugging, dynamic reverse engineering, dynamic decomposition, dynamic dependency relations, program execution path, dynamic program thread, dynamic lattice, incremental dynamic lattice
Citation:
Habib Ammari, "Towards Program Debugging and Dynamic Reverse Engineering Using Multi-procedure Program Dynamic Decomposition," hicss, vol. 5, pp.71, 30th Hawaii International Conference on System Sciences (HICSS) Volume 5: Advanced Technology Track, 1997