Debug all your code

Portable mixed-environment debugging

Byeongcheol Lee, Martin Hirzel, Robert Grimm, Kathryn S. McKinley

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

Programmers build large-scale systems with multiple languages to reuse legacy code and leverage languages best suited to their problems. For instance, the same program may use Java for ease-of-programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which may execute in different environments. Unfortunately, traditional multilingual debuggers require a single execution environment. This paper presents a novel composition approach to building portable mixed-environment debuggers, in which an intermediate agent interposes on language transitions, controlling and reusing single-environment debuggers. We implement debugger composition in Blink, a debugger for Java, C, and the Jeannie programming language. We show that Blink is (1) relatively simple: it requires modest amounts of new code; (2) portable: it supports multiple Java Virtual Machines, C compilers, operating systems, and component debuggers; and (3) powerful: composition eases debugging, while supporting new mixed-language expression evaluation and Java Native Interface (JNI) bug diagnostics. In real-world case studies, we show that language-interface errors require single-environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. We also describe extensions for other mixed-environments to show debugger composition will generalize.

Original languageEnglish (US)
Title of host publicationOOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009
Pages207-225
Number of pages19
DOIs
StatePublished - 2009
EventOOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009 - Orlando, FL, United States
Duration: Oct 25 2009Oct 29 2009

Other

OtherOOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009
CountryUnited States
CityOrlando, FL
Period10/25/0910/29/09

Fingerprint

Chemical analysis
Computer operating systems
Computer programming languages
Large scale systems
Virtual machine

Keywords

  • Composition
  • Foreign function interface
  • JNI

ASJC Scopus subject areas

  • Software

Cite this

Lee, B., Hirzel, M., Grimm, R., & McKinley, K. S. (2009). Debug all your code: Portable mixed-environment debugging. In OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009 (pp. 207-225) https://doi.org/10.1145/1640089.1640105

Debug all your code : Portable mixed-environment debugging. / Lee, Byeongcheol; Hirzel, Martin; Grimm, Robert; McKinley, Kathryn S.

OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009. 2009. p. 207-225.

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Lee, B, Hirzel, M, Grimm, R & McKinley, KS 2009, Debug all your code: Portable mixed-environment debugging. in OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009. pp. 207-225, OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009, Orlando, FL, United States, 10/25/09. https://doi.org/10.1145/1640089.1640105
Lee B, Hirzel M, Grimm R, McKinley KS. Debug all your code: Portable mixed-environment debugging. In OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009. 2009. p. 207-225 https://doi.org/10.1145/1640089.1640105
Lee, Byeongcheol ; Hirzel, Martin ; Grimm, Robert ; McKinley, Kathryn S. / Debug all your code : Portable mixed-environment debugging. OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009. 2009. pp. 207-225
@inproceedings{e8e4e2685a4f47ec8d1af00269f24820,
title = "Debug all your code: Portable mixed-environment debugging",
abstract = "Programmers build large-scale systems with multiple languages to reuse legacy code and leverage languages best suited to their problems. For instance, the same program may use Java for ease-of-programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which may execute in different environments. Unfortunately, traditional multilingual debuggers require a single execution environment. This paper presents a novel composition approach to building portable mixed-environment debuggers, in which an intermediate agent interposes on language transitions, controlling and reusing single-environment debuggers. We implement debugger composition in Blink, a debugger for Java, C, and the Jeannie programming language. We show that Blink is (1) relatively simple: it requires modest amounts of new code; (2) portable: it supports multiple Java Virtual Machines, C compilers, operating systems, and component debuggers; and (3) powerful: composition eases debugging, while supporting new mixed-language expression evaluation and Java Native Interface (JNI) bug diagnostics. In real-world case studies, we show that language-interface errors require single-environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. We also describe extensions for other mixed-environments to show debugger composition will generalize.",
keywords = "Composition, Foreign function interface, JNI",
author = "Byeongcheol Lee and Martin Hirzel and Robert Grimm and McKinley, {Kathryn S.}",
year = "2009",
doi = "10.1145/1640089.1640105",
language = "English (US)",
isbn = "9781605587349",
pages = "207--225",
booktitle = "OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009",

}

TY - GEN

T1 - Debug all your code

T2 - Portable mixed-environment debugging

AU - Lee, Byeongcheol

AU - Hirzel, Martin

AU - Grimm, Robert

AU - McKinley, Kathryn S.

PY - 2009

Y1 - 2009

N2 - Programmers build large-scale systems with multiple languages to reuse legacy code and leverage languages best suited to their problems. For instance, the same program may use Java for ease-of-programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which may execute in different environments. Unfortunately, traditional multilingual debuggers require a single execution environment. This paper presents a novel composition approach to building portable mixed-environment debuggers, in which an intermediate agent interposes on language transitions, controlling and reusing single-environment debuggers. We implement debugger composition in Blink, a debugger for Java, C, and the Jeannie programming language. We show that Blink is (1) relatively simple: it requires modest amounts of new code; (2) portable: it supports multiple Java Virtual Machines, C compilers, operating systems, and component debuggers; and (3) powerful: composition eases debugging, while supporting new mixed-language expression evaluation and Java Native Interface (JNI) bug diagnostics. In real-world case studies, we show that language-interface errors require single-environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. We also describe extensions for other mixed-environments to show debugger composition will generalize.

AB - Programmers build large-scale systems with multiple languages to reuse legacy code and leverage languages best suited to their problems. For instance, the same program may use Java for ease-of-programming and C to interface with the operating system. These programs pose significant debugging challenges, because programmers need to understand and control code across languages, which may execute in different environments. Unfortunately, traditional multilingual debuggers require a single execution environment. This paper presents a novel composition approach to building portable mixed-environment debuggers, in which an intermediate agent interposes on language transitions, controlling and reusing single-environment debuggers. We implement debugger composition in Blink, a debugger for Java, C, and the Jeannie programming language. We show that Blink is (1) relatively simple: it requires modest amounts of new code; (2) portable: it supports multiple Java Virtual Machines, C compilers, operating systems, and component debuggers; and (3) powerful: composition eases debugging, while supporting new mixed-language expression evaluation and Java Native Interface (JNI) bug diagnostics. In real-world case studies, we show that language-interface errors require single-environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. We also describe extensions for other mixed-environments to show debugger composition will generalize.

KW - Composition

KW - Foreign function interface

KW - JNI

UR - http://www.scopus.com/inward/record.url?scp=72249085978&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=72249085978&partnerID=8YFLogxK

U2 - 10.1145/1640089.1640105

DO - 10.1145/1640089.1640105

M3 - Conference contribution

SN - 9781605587349

SP - 207

EP - 225

BT - OOPSLA 2009 - 24th Annual ACM Conference on Object-Oriented Programming, Systems, Languages and Applications, OOPSLA 2009

ER -