title: "A Scalable Mixed-Level Approach to Dynamic Analysis of C and C++ Programs" authors: Philip J. Guo venue: Master of Engineering (M.Eng.) thesis, Department of Electrical Engineering and Computer Science, Massachusetts Institute of Technology year: 2006 footer: "Charles and Jennifer Johnson Award for Outstanding Computer Science Master of Engineering Thesis" links: - Webpage tweet: Combining source- and binary-level data makes it easier to build tools that analyze C and C++ code abstract: > This thesis addresses the difficult task of constructing robust and scalable dynamic program analysis tools for programs written in memory-unsafe languages such as C and C++, especially those that are interested in observing the contents of data structures at run time. In this thesis, I first introduce my novel mixed-level approach to dynamic analysis, which combines the advantages of both source- and binary-based approaches. Second, I present a tool framework that embodies the mixed-level approach. This framework provides memory safety guarantees, allows tools built upon it to access rich source- and binary-level information simultaneously at run time, and enables tools to scale to large, real-world C and C++ programs on the order of millions of lines of code. Third, I present two dynamic analysis tools built upon my framework -- one for performing value profiling and the other for performing dynamic inference of abstract types -- and describe how they far surpass previous analyses in terms of scalability, robustness, and applicability. Lastly, I present several case studies demonstrating how these tools aid both humans and automated tools in several program analysis tasks: improving human understanding of unfamiliar code, invariant detection, and data structure repair. bibtex: > @mastersthesis{GuoMEngThesis2006, author = {Philip J. Guo}, title = {A Scalable Mixed-Level Approach to Dynamic Analysis of {C} and {C++} Programs}, school = {MIT Department of Electrical Engineering and Computer Science}, address = {Cambridge, MA}, month = May, year = {2006} }