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}
}