Debugging multi-language applications via visualization of bug traces

Project

Debugging multi-language applications via visualization of bug traces

Principal Investigator

Sukyoung Ryu

Kaist

Oracle Fellowship Recipient

Park Jihyeok, Sora Bae, SungHo Lee

Oracle Principal Investigator

Cristina Cifuentes, Senior Director of Research & Development, Oracle Labs Australia
David Meibusch, Consulting Member of Technical Staff

Summary

This project aims to develop a graphical debugging technique using the visualization tool developed by the Oracle Labs Australia. While the visualization tool has been widely and successfully used in Oracle Labs, we propose to extend its applications to debugging applications written in multiple programming languages. The main difficulties in analyzing multi-language applications are to understand different language models possibly with different value domains and semantic functions and to connect them seamlessly in the absence of explicit flows between them. This project aims to provide a mechanism that enables easy and user-friendly debugging of multi-language applications utilizing visualization of bug traces: First, we empirically study uses of analysis results in understanding and debugging Android client-side JavaScript web applications. Then, we devise high-level APIs between the Oracle visualization tool and analysis results that the tool manipulates, and we identify needs for visualization of interactions between various components developed in multiple programming languages and bug traces in them. Finally, we design debugging scenarios using the visualization tool and analysis results via the proposed APIs. We believe that the expected research outcomes would be useful for program analysis and bug finding in Oracle, which equips with the visualization tool, scalable program analyzers, and large-scale multi-language applications. Our specific choice of Android Java and JavaScript may not be directly applicable to Oracle but the research outcomes should be applicable widely including Java JNI, for example.