Abstract

Call graphs have many applications in the field of software engineering. For instance, they are at the foundation of many advanced analysis, such as inter-procedural data-flow analysis, and can help software developers to understand programs. Although many methods have been proposed to statically construct call graphs in C/C++ programs, the call graphs constructed by these methods are still not complete and accurate enough. Especially for the parent-child relationship between threads, there is currently no method that can extract it statically. In order to solve these problems, this paper proposes a static analysis method based on simulation execution to construct call graphs of C/C++ programs. The method analyzes the LLVM IR generated by the source program compilation, and it performs simulation execution on the LLVM IR to generate call graphs. The experimental results show that compared to existing static analysis methods, the proposed method has higher recall rate and higher precision rate, and can analyze the parent-child relationship between threads in a program that uses the pthread library.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call