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...
Main Author: | |
---|---|
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 |