ACM Home Page
Please provide us with feedback. Feedback
Debug all your code: portable mixed-environment debugging
Full text PdfPdf (711 KB)
Source
Conference on Object Oriented Programming Systems Languages and Applications archive
Proceeding of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications table of contents
Orlando, Florida, USA
SESSION: Software tools and libraries table of contents
Pages 207-226  
Year of Publication: 2009
ISBN:978-1-60558-766-0
Also published in ...
Authors
Byeongcheol Lee  University of Texas at Austin, Austin, TX, USA
Martin Hirzel  IBM Watson Research Center, Hawthorne, USA
Robert Grimm  New York University, New York, USA
Kathryn S. McKinley  University of Texas at Austin, Austin, TX, USA
Sponsor
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 27,   Downloads (12 Months): 27,   Citation Count: 0
Additional Information:

abstract   references   index terms  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1640089.1640105
What is a DOI?

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.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

 
1
C. Bailey. Java technology, IBM style: Introduction to the IBM developer kit. http://www.ibm.com/developerworks/java/library/j-ibmjava1.html, May 2006.
 
2
D. M. Beazley. SWIG: An easy to use tool for integrating scripting languages with C and C++. In USENIX Tcl/Tk Workshop (TCLTK), 1996.
 
3
S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2006.
 
4
P. Bothner. Compiling Java with GCJ. http://www.linuxjournal.com/article/4860, Jan. 2003.
 
5
Free Standards Group. DWARF 3 debugging information format. http://www.dwarfstd.org/Dwarf3.pdf, Dec. 2005.
 
6
M. Furr and J. S. Foster. Checking type safety of foreign function calls. In Programming Language Design and Implementation (PLDI), 2005.
 
7
M. Furr and J. S. Foster. Polymorphic type inference for the JNI. In European Symposium on Programming (ESOP), 2006.
 
8
M. Furr and J. S. Foster. Checking type safety of foreign function calls. Transactions on Programming Languages and Systems (TOPLAS), 30(4), 2008.
 
9
R. Grimm. xtc -- eXTensible C. http://www.cs.nyu.edu/rgrimm/xtc/.
 
10
R. Grimm. Better extensibility through modular syntax. In Programming Language Design and Implementation (PLDI), 2006.
 
11
D. R. Hanson. A machine-independent debugger--revisited. Softw. Pract. Exper., 29(10):849--862, 1999.
 
12
M. Hirzel and R. Grimm. Jeannie: Granting Java native interface developers their wishes. In Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), 2007.
 
13
G. Kondoh and T. Onodera. Finding bugs in Java native interface programs. In International Symposium on Software Testing and Analysis (ISSTA), 2008.
 
14
S. Liang. The Java Native Interface: Programmer's Guide and Specification. Addison-Wesley, 1999.
 
15
J. Lind-Nielsen. BuDDy. http://buddy.sourceforge.net/.
 
16
M. A. Linton. The evolution of Dbx. In Usenix Technical Conference, 1990.
 
17
G. C. Necula, S. McPeak, and W. Weimer. CCured: Typesafe retrofitting of legacy code. In Principles of Programming Languages (POPL), 2002.
 
18
V. Providin and C. Elford. Debugging native methods in Java applications. In EclipseCon User Conference, Mar. 2007.
 
19
N. Ramsey and D. R. Hanson. A retargetable debugger. In Programming Language Design and Implementation (PLDI), 1992.
 
20
J. B. Rosenberg. How Debuggers Work: Algorithms, Data Structures, and Architecture. John Wiley & Sons, 1996.
 
21
S. Ryu and N. Ramsey. Source-level debugging for multiple languages with modest programming effort. In International Conference on Compiler Construction (CC), 2005.
 
22
M. Stall. Mike Stall's .NET debugging blog. http://blogs.msdn.com/jmstall/default.aspx.
 
23
Standard Performance Evaluation Corporation. SPECjvm98 Documentation, release 1.03 edition, March 1999.
 
24
Sun Microsystems, Inc. Bug database Bug 4207056 was opened 1999-01-29. http://bugs.sun.com.
 
25
Sun Microsystems, Inc. Java SE HotSpot at a glance. http://java.sun.com/javase/technologies/hotspot/.
 
26
Sun Microsystems, Inc. JVMTM tool interface, version 1.1. http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html, 2006.
 
27
Sun Microsystems, Inc. Debugging a Java application with dbx. http://docs.sun.com/app/docs/doc/819-5257/blamm?a=view, 2007.
 
28
G. Tan, A. W. Appel, S. Chakradhar, A. Raghunathan, S. Ravi, and D. Wang. Safe Java native interface. In International Symposium on Secure Software Engineering (ISSSE), 2006.
 
29
G. Tan and J. Croft. An empirical security study of the native code in the JDK. In Usenix Security Symposium (SS), 2008.
 
30
G. Tan and G. Morrisett. ILEA: Inter-language analysis across Java and C. In Object-Oriented Programming Systems and Applications (OOPSLA), 2007.
 
31
Z. Tatlock, C. Tucker, D. Shuffelton, R. Jhala, and S. Lerner. Deep typechecking and refactoring. In Object-Oriented Programming Systems Languages and Applications (OOPSLA), 2008.
 
32
A. P. Tolmach and A. W. Appel. Debugging standard ML without reverse engineering. In LISP and Functional Programming (LFP), 1990.
 
33
M. van den Brand, B. Cornelissen, P. Olivier, and J. Vinju. TIDE: A generic debugging framework -- tool demonstration. Electronic Notes in Theoretical Computer Science, 141(4), 2005.
 
34
Visual studio debugger extensibility. http://msdn.microsoft.com/en-us/library/bb161718(VS.80).aspx.
 
35
M. White. Debugging integrated Java and C/C++ code. http://web.archive.org/web/20041205063318/www-106.ibm.com/developerworks/java/library/j-jnidebug/, Nov. 2001.
 
36
M. White. Integrated Java technology and C debugging using the Eclipse platform. In JavaOne Conference, 2006.
 
37
A. Zeller. Why Programs Fail: A Guide to Systematic Debugging. Morgan Kaufmann, Oct. 2005.