Challenges in Debugging Dynamically Compiled Languages As Exemplified by C# Debugger for Tizen

Challenges in Debugging Dynamically Compiled Languages As Exemplified by C# Debugger for Tizen

Samsung R&D Institute Russia Center of System Software Challenges in debugging dynamically compiled languages as exemplified by C# debugger for Tizen Dmitri Botcharnikov 1 Agenda Dynamically compiled languages Tizen .NET Debugging Challenges Tizen .NET Debugger internals Future plans 2 Dynamically compiled languages Dynamically (Just-In-Time) compiled languages VM manages low-level details: memory allocation, exception handling But for debuggers… 3 Tizen .NET Visual Studio Tools for Tizen preview were released C# was added to Tizen Over 1,400,000 C# developers worldwide Tizen running on 50 millions Samsung devices (TV, wearables, mobile, IoT) http://developer.tizen.org 4 Technologies Tizen OS (emulator, platform-specific APIs) Xamarin.Forms .NET Core (CoreCLR, CoreFX, Roslyn) Visual Studio 2015 (Windows) 5 C# Compilation & Execution C# source MSIL Output CLR Roslyn JIT Language-specific compiler: C# => MSIL CLR JIT compiler: MSIL => native code 6 Debugging Challenges Source code to native code mapping ◦ C# compiler generates debugging information for source code to MSIL mapping Stepping in and over ◦ Stepping into not yet compiled code ◦ Managed exception handlers ◦ Lambdas, closures & iterators Local variables & arguments inspection ◦ C# compiler generates debugging information for MSIL variables 7 LLDB Subproject of LLVM (http://lldb.llvm.org) Native debugger builds on LLVM and Clang libraries Supports X86 and ARM architectures 8 SOS debugger plug-in Plug-in for LLDB (libsosplugin.so, libsos.so) Port of SOS.dll (SOS Debugging extension) to Linux platform Provides low-level information about internals of CLR environment Useful for CoreCLR developers, but not so for application developers 9 GDB JIT Interface Interface for registering JITed code with debuggers Initially designed for GDB, now supported by LLDB VM should construct in-memory ELF+DWARF image and call predefined function ◦ __jit_debug_register_code Debugger puts breakpoint on this function On breakpoint hit loads constructed image and resume execution 10 GDB JIT: Pro & Cons Pro ◦ Supported by both GDB and LLDB ◦ Integrated into debugger infrastructure ◦ The easiest way to add support for JITed language Cons ◦ Invasive (only needed for debugging) ◦ Memory consuming (~700 b on ARM, ~1kb on x86_64) ◦ Inherently static: generated before execution 11 Stepping over and in Stepping in and over ◦ Stepping into still not compiled code ◦ Managed exception handlers: stack unwinding ◦ Lambdas, closures & iterators CoreCLR implements calls through stubs dispatch which is dynamically changed Solution ◦ Generate symbols for stubs in GDB JIT in- memory image ◦ Modify LLDB thread plans to follow these symbols 12 GDB/MI & Microsoft MIEngine GDB/MI: machine oriented text interface Supported by Eclipse CDT, Emacs & others Visual Studio MI Debug Engine is an open source VS extension that provides support for GDB/MI Modified to support Tizen Application Framework 13 Historical debugging PoC Allows you to move backward and forward through the execution of your application and inspect its state Implemented in CoreCLR through ICorProfiler interface Requires implementation of platform- specific profiler hooks (OS + arch) Developed Proof-of-Concept realization for ARM & x86_64 Linux 14 Tizen .NET Debugger Host Remote target Visual Studio .NET 2015 application MIEngine JIT/Call GDB JIT CoreCLR VM GDB/MI Debug GDB/MI through SDB Smart Debug LLDB- LLDB-MI Bridge server 15 Future plans Develop C# language type plug-in for LLDB ◦ Get LLDB knows about C# type system Develop .NET runtime support plug-in for LLDB ◦ Generic instantiation types available during method execution ◦ Better support for CoreCLR stubs Develop full-fledged Historical debugger 16 Thank you! 17 .

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    17 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us