Post

Samsung .NET Core Debugger and MonoDevelop

A post about Samsung's .NET Core debugger and how I integrate it with MonoDevelop

Visual Studio for Mac has been supporting .NET Core debugging for a while, but MonoDevelop users do not get the same experience. It has been a well known issue, and mainly due to the fact that Microsoft does not make the core debugger redistributable for non-VS tools.

Below is the diagram showing the different components involved,

img-description Figure 1: Components for Visual Studio for Mac .NET Core debugging.

Noticeably, vsdbg is the component that only serves Visual Studio (for Windows and Mac), and Visual Studio Code. The licensing terms for vsdbg-ui is not quite clear, so we should assume it is not available for non-VS products either.

So to create the same debugging experience in MonoDevelop, Samsung’s .NET Core debugger should be used, as the diagram below indicates,

img-description Figure 2: Components for MonoDevelop .NET Core debugging.

Now I have such a custom extension for my personal adventure, and identify several issues.

The first one is that Samsung debugger did not yet implement “process” event. I created a pull request and hope it can be merged soon.

The second one is a data type mismatch between Samsung debugger and Microsoft’s managed implementation of the VS Code Debug Protocol.

I hacked Samsung debugger and proved that if the data type matches then .NET Core debugging can work flawlessly. However, that hack seems to have significant side effect, so I hope Samsung guys can decide what’s the best option there.

You can find the patched debugger from my personal fork.

I just released all the source code at GitHub, and you can try out the extension.

You still need to build my fork of the debugger so as to get everything ready. Once Samsung resolves the two issues and publishes their new debugger packages, this step can then be skipped.

Stay tuned.

© Lex Li. All rights reserved. The code included is licensed under CC BY 4.0 unless otherwise noted.
Advertisement