COCO: CONTINUOUS COMPILATION

Compilers, Programming Languages, and Architecture Group
Department of Computer Science, University of Pittsburgh

Overview People Projects Publications Meetings Conferences  

TDB: A Transparent Debugger for Dynamically Translated Code

Debugging techniques have evolved over the years in response to changes in programming languages, implementation techniques, and user needs. A new type of implementation vehicle for software has emerged that, once again, requires new debugging techniques. Software dynamic translation (SDT) has received much attention due to compelling applications of the technology, including software security checking, binary translation, and dynamic optimization. Using SDT, program code changes dynamically, and thus, debugging techniques developed for statically generated code cannot be used to debug these applications in a transparent way. In this project, we are developing new debugging techniques for applications executing with SDTs. Our techniques use novel dynamic code mappings to create the illusion that the source program is being debugged, while allow the SDT system to modify the executing code. We are targetting a number of SDT applications, including dynamic binary translation, dynamic code optimization, code security checking, reliable software systems, computer architecture simulation, and dynamic instrumentation.

We have built a prototype debugger, called TDB, that integrates a SDT system, Strata, with a widely used debugger, gdb. Our prototype can handle many types of code modifications applied by SDTs, including the basic translations applied, overhead reduction transformations, and dynamic instrumentation. The basic dynamic translations include generating a new instruction, inserting multiple instructions for a single program statement during translation, ignoring and not generating instructions for a program statement, deletion (flushing) of previously translated instructions, and the duplication of program instructions in the translated code. We also consider several overhead reduction transformations, including instruction trace formation, conditional branch linking, indirect branch translation caching, partial inlining of unconditional branches and calls, and fast return handling. Finally, we consider the effect of insertion and removal of instrumentation in the translated code.

Retargeting Dynamic Translators to TDB


TDB is designed to be portable for other dynamic translators. The tool includes an interception layer, as shown above, that provides the interfaces and abstractions for integrating a debugger with a dynamic translator. The interception layer has the interfaces for tracking and manipulating code changes and making queries on those changes to map between the dynamically translated binary and the source program.

Publications

All publications are available from the CoCo publication web site. Please select the tab above for the publications.

People

Naveen Kumar is the lead student and developed TDB for his thesis. His Ph.D. thesis will focus on debugging dynamically translated programs.

Bruce Childers is the faculty investigator at the University of Pittsburgh.

Mary Lou Soffa is the faculty investigator at the University of Virginia.



Last modified: July 12, 2005. This page is maintained by Naveen Kumar and Bruce Childers