Files in this item
|(no description provided)|
|Title:||Interactive source-level debugging of globally optimized code with expected behavior|
|Author(s):||Zurawski, Lawrence Walter|
|Doctoral Committee Chair(s):||Johnson, Ralph E.|
|Department / Program:||Computer Science|
|Degree Granting Institution:||University of Illinois at Urbana-Champaign|
|Abstract:||Optimizing compilers and source-level debuggers have become essential for program development. However, their basic premises differ, so it is difficult for them to coexist within a programming environment. The primary purpose of a compiler is to make a program run faster while preserving the program's output. The intermediate steps are irrelevant, so the optimized and unoptimized program states may differ at intermediate points. The purpose of a debugger is to examine the program state at intermediate points.
We show how an optimizing compiler can cooperate with a source-level debugger. Optimizations are performed in such a way as to never prevent the debugger from carrying out a request. The loss of optimization is minimized by using an advanced compiler. All of the debugger commands can be provided if the source-level, unoptimized program state can be recovered from the low-level, optimized state at every point in the program from which the debugger might be invoked. The compiler identifies these stopping places and modifies its optimizations to ensure that the source-level state can be recovered at every stopping place. The compiler computes recovery information that describes the effects of optimization at stopping places. Recovery information is used by the debugger to map the low-level, optimized state to the source-level state at stopping places. Debugger commands that change the program state are implemented by recovering the source-level state and using this information to convert the affected part of the low-level state (which is always contained in a single activation record) to unoptimized form before carrying out the command.
These ideas were used to implement a source-level debugger for use with Typed Smalltalk (TS), an optimizing Smalltalk compiler. The executable programs generated by TS can be debugged at the source level and are from 0 to 17 percent slower than fully optimized programs. These results show that source-level debugging can be provided without an excessive loss of optimization.
|Rights Information:||Copyright 1990 Zurawski, Lawrence Walter|
|Date Available in IDEALS:||2011-05-07|
|Identifier in Online Catalog:||AAI9021782|