Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++

Dynamic binary translation allows us to analyze a program during execution without the need for a compiler or the program's source code. In this work, we present two applications of dynamic binary translation: tracematches and unread memory detection. Libraries are ubiquitous in modern softwar...

Full description

Bibliographic Details
Main Author: Eyolfson, Jonathan
Language:en
Published: 2011
Subjects:
Online Access:http://hdl.handle.net/10012/6206
id ndltd-WATERLOO-oai-uwspace.uwaterloo.ca-10012-6206
record_format oai_dc
spelling ndltd-WATERLOO-oai-uwspace.uwaterloo.ca-10012-62062013-01-08T18:54:57ZEyolfson, Jonathan2011-08-31T15:53:11Z2011-08-31T15:53:11Z2011-08-31T15:53:11Z2011http://hdl.handle.net/10012/6206Dynamic binary translation allows us to analyze a program during execution without the need for a compiler or the program's source code. In this work, we present two applications of dynamic binary translation: tracematches and unread memory detection. Libraries are ubiquitous in modern software development. Each library requires that its clients follow certain conventions, depending on the domain of the library. Tracematches are a particularly expressive notation for specifying library usage conventions, but have only been implemented on top of Java. In this work, we leverage dynamic binary translation to enable the use of tracematches on executables, particularly for compiled C/C++ programs. The presence of memory that is never read, or memory writes that are never read during execution is wasteful, and may be also be indicative of bugs. In addition to tracematches, we present an unread memory detector. We built this detector using dynamic binary translation. We have implemented a tool which monitors tracematches on top of the Pin framework along with unread memory. We describe the operation of our tool using a series of motivating examples and then present our overall monitoring approach. Finally, we include benchmarks showing the overhead of our tool on 4 open source projects and report qualitative results.enruntime monitoringdynamic binary translationTracerory - Dynamic Tracematches and Unread Memory Detection for C/C++Thesis or DissertationElectrical and Computer EngineeringMaster of Applied ScienceElectrical and Computer Engineering
collection NDLTD
language en
sources NDLTD
topic runtime monitoring
dynamic binary translation
Electrical and Computer Engineering
spellingShingle runtime monitoring
dynamic binary translation
Electrical and Computer Engineering
Eyolfson, Jonathan
Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++
description Dynamic binary translation allows us to analyze a program during execution without the need for a compiler or the program's source code. In this work, we present two applications of dynamic binary translation: tracematches and unread memory detection. Libraries are ubiquitous in modern software development. Each library requires that its clients follow certain conventions, depending on the domain of the library. Tracematches are a particularly expressive notation for specifying library usage conventions, but have only been implemented on top of Java. In this work, we leverage dynamic binary translation to enable the use of tracematches on executables, particularly for compiled C/C++ programs. The presence of memory that is never read, or memory writes that are never read during execution is wasteful, and may be also be indicative of bugs. In addition to tracematches, we present an unread memory detector. We built this detector using dynamic binary translation. We have implemented a tool which monitors tracematches on top of the Pin framework along with unread memory. We describe the operation of our tool using a series of motivating examples and then present our overall monitoring approach. Finally, we include benchmarks showing the overhead of our tool on 4 open source projects and report qualitative results.
author Eyolfson, Jonathan
author_facet Eyolfson, Jonathan
author_sort Eyolfson, Jonathan
title Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++
title_short Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++
title_full Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++
title_fullStr Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++
title_full_unstemmed Tracerory - Dynamic Tracematches and Unread Memory Detection for C/C++
title_sort tracerory - dynamic tracematches and unread memory detection for c/c++
publishDate 2011
url http://hdl.handle.net/10012/6206
work_keys_str_mv AT eyolfsonjonathan tracerorydynamictracematchesandunreadmemorydetectionforcc
_version_ 1716573848271323136