Interactive source-level debugging of globally optimized code with expected behavior
Zurawski, Lawrence Walter
This item is only available for download by members of the University of Illinois community. Students, faculty, and staff at the U of I may log in with your NetID and password to view the item. If you are trying to access an Illinois-restricted dissertation or thesis, you can request a copy through your library's Inter-Library Loan office or purchase a copy directly from ProQuest.
Permalink
https://hdl.handle.net/2142/23164
Description
Title
Interactive source-level debugging of globally optimized code with expected behavior
Author(s)
Zurawski, Lawrence Walter
Issue Date
1990
Doctoral Committee Chair(s)
Johnson, Ralph E.
Department of Study
Computer Science
Discipline
Computer Science
Degree Granting Institution
University of Illinois at Urbana-Champaign
Degree Name
Ph.D.
Degree Level
Dissertation
Keyword(s)
Computer Science
Language
eng
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.
Use this login method if you
don't
have an
@illinois.edu
email address.
(Oops, I do have one)
IDEALS migrated to a new platform on June 23, 2022. If you created
your account prior to this date, you will have to reset your password
using the forgot-password link below.