Stefansdom Donauufer Hofburg Haashaus UNO-City Hofburg Hofburg

Research Interests

Symbolic debugging of optimized code
 

As optimizations were introduced into compilers more than 30 years ago, it was recognized that the debugging of optimized programs is difficult. During the time the development of sophisticated optimizations methods also increased the difficulty of debugging these programs. But the demand for debuggers which can handle optimized code also increased because most of the production compilers uses optimizations. Especially for embedded processors, were nowadays also high level languages are used, these optimizations are very important for the compilers. These optimizations may be the only possibilities to achieve the required execution times for a given processor. Current developments in processor design, e.g. VLIW architectures, require that the compiler is able to utilize these additional features. For example, optimizations such as code reordering, software pipelining or loop transformations are used to achieve an high amount of parallelism for such architectures.

For the user debugging of optimized code is difficult, because of the absence of debugging tools which support optimized code. Debugging the unoptimized program is no solution. An optimized program can have a different behavior as the unoptimized version. The reason for the different semantic behavior may be an error in the application which is uncovered by the optimization or an error in the optimizer. An example for such an application error is the use an array outside the boundaries. Optimization can change the data layout. The optimizer itself can use an unsafe optimization or can have implementation errors.

Bibliography
 
Clara Jaramillo and Rajiv Gupta and Mary Lou Soffa:
FULLDOC: A Full Reporting Debugger for Optimized Code
Roland Wismüller
Source Level Debugging of Optimized Programs Using Data Flow Analysis
C. Tice and S. Graham
Key Instructions: Solving the Code Location Problem for Optimized Code
http://citeseer.nj.nec.com/tice00key.html
Cool, Lyle Edward
Debugging VLIW Code After Instruction Scheduling
http://citeseer.nj.nec.com/cool92debugging.html
Adl-Tabatabai, Ali-Reza and Gross, Thomas
Symbolic Debugging of Globally Optimized Code: Data Value Problems and Their Solutions
http://citeseer.nj.nec.com/adl-tabatabai94symbolic.html