Reverse-engineering object interactions from source code can be done through static, dynamic, or hybrid (static plus dynamic) analyses. In the latter two, monitoring a program and collecting runtime information translates into some overhead during program execution. Depending on the type of application, the imposed overhead can reduce the precision and accuracy of the reverse-engineered object interactions (the larger the overhead the less precise or accurate the reverse-engineered interactions), to such an extent that the reverse-engineered interactions may not be correct, especially when reverse-engineering a multithreaded software system. One is therefore seeking an instrumentation strategy as less intrusive as possible. In our past work, we showed that a hybrid approach is one step towards such a solution, compared to a purely dynamic approach, and that there is room for improvements. In this paper, we uncover, in a systematic way, other aspects of the dynamic analysis that can be improved to further reduce runtime overhead, and study alternative solutions. Our experiments show effective overhead reduction thanks to a modified procedure to collect runtime information.

Additional Metadata
Keywords Reverse engineering, Overhead, Multithreaded, Hybrid analysis, Object interactions, Logging.
Publisher Department of Systems and Computer Engineering
Series SCE Technical Reports
Mehrfard, H. (Hossein), & Labiche, Y. (2015). Reducing Instrumentation Overhead when Reverse-Engineering Object Interactions. SCE Technical Reports. Department of Systems and Computer Engineering.