Debugging mixed-environment programs with Blink

SummaryProgrammers build large‐scale systems with multiple languages to leverage legacy code and 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 challe...

Celý popis

Uložené v:
Podrobná bibliografia
Vydané v:Software, practice & experience Ročník 45; číslo 9; s. 1277 - 1306
Hlavní autori: Lee, Byeongcheol, Hirzel, Martin, Grimm, Robert, McKinley, Kathryn S.
Médium: Journal Article
Jazyk:English
Vydavateľské údaje: Bognor Regis Blackwell Publishing Ltd 01.09.2015
Wiley Subscription Services, Inc
Predmet:
ISSN:0038-0644, 1097-024X
On-line prístup:Získať plný text
Tagy: Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
Popis
Shrnutí:SummaryProgrammers build large‐scale systems with multiple languages to leverage legacy code and 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 often 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 (i) simple: it requires modest amounts of new code; (ii) portable: it supports multiple Java virtual machines, C compilers, operating systems, and component debuggers; and (iii) powerful: composition eases debugging, while supporting new mixed‐language expression evaluation and Java native interface bug diagnostics. To demonstrate the generality of interposition, we build prototypes and demonstrate debugger language transitions with C for five of six other languages (Caml, Common Lisp, C#, Perl 5, Python, and Ruby) without modifications to their debuggers. Using real‐world case studies, we show that diagnosing language interface errors require prior single‐environment debuggers to restart execution multiple times, whereas Blink directly diagnoses them with one execution. Copyright © 2014 John Wiley & Sons, Ltd.
Bibliografia:ark:/67375/WNG-0K6FB760-6
istex:665DEA2151BDD43522F8C9955F07C333CB8D1D72
ArticleID:SPE2276
ObjectType-Article-1
SourceType-Scholarly Journals-1
ObjectType-Feature-2
content type line 14
content type line 23
ISSN:0038-0644
1097-024X
DOI:10.1002/spe.2276