Debugging Native Extensions of Dynamic Languages
Jacob Kreindl (1), Manuel Rigger (1), Hanspeter M\"ossenb\"ock (1), ((1) Johannes Kepler University Linz)

TL;DR
This paper introduces source-level debugging support for native extensions in dynamic languages like Ruby and Python using GraalVM and Sulong, enabling unified debugging of mixed-language programs.
Contribution
It adds source-level debugging for native extensions in dynamic languages within GraalVM, bridging the gap between interpreted code and native C/C++ extensions.
Findings
Enables debugging of native extensions in dynamic languages.
Supports multiple LLVM-based languages in a unified debugger.
Improves developer experience for mixed-language applications.
Abstract
Many dynamic programming languages such as Ruby and Python enable developers to use so called native extensions, code implemented in typically statically compiled languages like C and C++. However, debuggers for these dynamic languages usually lack support for also debugging these native extensions. GraalVM can execute programs implemented in various dynamic programming languages and, by using the LLVM-IR interpreter Sulong, also their native extensions. We added support for source-level debugging to Sulong based on GraalVM's debugging framework by associating run-time debug information from the LLVM-IR level to the original program code. As a result, developers can now use GraalVM to debug source code written in multiple LLVM-based programming languages as well as programs implemented in various dynamic languages that invoke it in a common debugger front-end.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
