{"id":{"repo_id":"uiuc","oai_identifier":"oai:www.ideals.illinois.edu:2142/23164"},"canonical_url":"https://search.dev.ndltd.org/etd/uiuc/oai:www.ideals.illinois.edu:2142/23164","repository":{"repo_id":"uiuc","name":"University of Illinois - Urbana-Champaign","base_url":"https://www.ideals.illinois.edu/oai-pmh"},"display":{"title":"Interactive source-level debugging of globally optimized code with expected behavior","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.","abstract_html":"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&#x27;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.","abstract_has_math":false,"creators":["Zurawski, Lawrence Walter"],"institution":"University of Illinois at Urbana-Champaign","degree_name":"Ph.D.","degree_level":"Dissertation","degree_discipline":"Computer Science","degree_department":null,"school":null,"contributors":["Johnson, Ralph E."],"advisors":[],"committee_chairs":[],"committee_members":[],"year":2011,"date_issued":"2011-05-07T14:04:26Z","date_published":"2011-05-07T14:04:26Z","updated_at":"2026-07-22T22:25:21Z","subjects":["Computer Science"],"languages":["eng"],"rights":["Copyright 1990 Zurawski, Lawrence Walter"],"rights_urls":[],"identifier_entries":[{"key":"dc:identifier","label":"Identifier","values":["AAI9021782","(UMI)AAI9021782"],"render_values":[{"text":"AAI9021782","href":null,"code":true},{"text":"(UMI)AAI9021782","href":null,"code":true}]}]},"links":{"outbound_url":"http://hdl.handle.net/2142/23164","outbound_label":"Handle","outbound_source":"dc:identifier"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor","label":"Contributor","values":["Johnson, Ralph E."]},{"key":"dc:creator","label":"Author","values":["Zurawski, Lawrence Walter"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date","label":"Dc Date","values":["2011-05-07T14:04:26Z","10000-01-01","1990"]},{"key":"dc:type","label":"Dc Type","values":["text"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer Science"]},{"key":"thesis:degree_level","label":"Degree Level","values":["Dissertation"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Ph.D."]},{"key":"thesis:institution_name","label":"Thesis Institution Name","values":["University of Illinois at Urbana-Champaign"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["Computer Science"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language","label":"Dc Language","values":["eng"]},{"key":"dc:rights","label":"Dc Rights","values":["Copyright 1990 Zurawski, Lawrence Walter"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier","label":"Identifier","values":["AAI9021782","(UMI)AAI9021782","http://hdl.handle.net/2142/23164"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description","label":"Description","values":["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.","Made available in DSpace on 2011-05-07T14:04:26Z (GMT). No. of bitstreams: 2 license.txt: 4922 bytes, checksum: 910b249b4beec47e7ab768910c8f966f (MD5) 9021782.pdf: 4748907 bytes, checksum: ad7c6490d60d839194735410ea2bec25 (MD5) Previous issue date: 1990","Item marked as restricted to the 'UIUC Users [automated]' Group (id=2) by Howard Ding (hding2@illinois.edu) on 2011-05-07T15:02:37Z Item is restricted indefinitely.","Restriction data tranferred 2014-07-01T11:29:47-05:00 Original Data Group with Access UIUC Users [automated] Release Date: none Reason: ETDs are only available to UIUC Users without author permission","ETDs are only available to UIUC Users without author permission","U of I Only"]},{"key":"dc:title","label":"Title","values":["Interactive source-level debugging of globally optimized code with expected behavior"]}]}],"canonical_facts":{"dc:contributor":["Johnson, Ralph E."],"dc:creator":["Zurawski, Lawrence Walter"],"dc:date":["2011-05-07T14:04:26Z","10000-01-01","1990"],"dc:description":["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.","Made available in DSpace on 2011-05-07T14:04:26Z (GMT). No. of bitstreams: 2 license.txt: 4922 bytes, checksum: 910b249b4beec47e7ab768910c8f966f (MD5) 9021782.pdf: 4748907 bytes, checksum: ad7c6490d60d839194735410ea2bec25 (MD5) Previous issue date: 1990","Item marked as restricted to the 'UIUC Users [automated]' Group (id=2) by Howard Ding (hding2@illinois.edu) on 2011-05-07T15:02:37Z Item is restricted indefinitely.","Restriction data tranferred 2014-07-01T11:29:47-05:00 Original Data Group with Access UIUC Users [automated] Release Date: none Reason: ETDs are only available to UIUC Users without author permission","ETDs are only available to UIUC Users without author permission","U of I Only"],"dc:identifier":["AAI9021782","(UMI)AAI9021782","http://hdl.handle.net/2142/23164"],"dc:language":["eng"],"dc:rights":["Copyright 1990 Zurawski, Lawrence Walter"],"dc:subject":["Computer Science"],"dc:title":["Interactive source-level debugging of globally optimized code with expected behavior"],"dc:type":["text"],"thesis:degree_discipline":["Computer Science"],"thesis:degree_level":["Dissertation"],"thesis:degree_name":["Ph.D."],"thesis:institution_name":["University of Illinois at Urbana-Champaign"]},"updated_at":"2026-07-22T22:25:21Z"}