13 comments

[ 4.0 ms ] story [ 49.9 ms ] thread
Not as all-encompassing as all those tools, but all I've ever needed is, dotPeek + de4dot.
dw4dot on combination with dnSpy is unbeatable to "understand" licensed software :)
It's very frustrating having all of these tools only support Windows.

Despite all the wonderful work Microsoft has done with CoreCLR, the "IDE" debugger is still only available under a license that only permits use with Visual Studio and VSCode [1] and mdbg is still nowhere to be found for CoreCLR [2].

1: https://github.com/dotnet/core/issues/505 2: https://github.com/dotnet/coreclr/issues/1145

From what I've gathered, the best you have right now for doing command line debugging is the "SOS" plugin for lldb, which seems to require building the lldb plugin and sometimes even lldb (!!) yourself [3][4].

3: https://github.com/dotnet/coreclr/blob/master/Documentation/...

4: http://blogs.microsoft.co.il/sasha/2017/02/26/analyzing-a-ne...

Not very fun if you're not using Windows.

(comment deleted)
how does jetbrains rider ide provide debugging then
Jetbrains was using a package provided by Microsoft and blogged that they would soon have to disable debugging of CoreCLR

Read “The Bad News” https://blog.jetbrains.com/dotnet/2017/02/15/rider-eap-17-nu...

Also the licensing issue https://github.com/dotnet/core/issues/505

Then a week later with the licensing issue still in place Jetbrains implemented their own debugger, on the comments it reads "This is our own debugger implementation." https://blog.jetbrains.com/dotnet/2017/02/23/rider-eap-18-co...

(comment deleted)
The “IDE” debugging library fuss was mistaken. CoreCLR supports the same COM ICorDebug API as mainstream .NET but Microsoft have their own private C# bindings library for using it with VS/VSCode. Anybody can generate their own C# bindings, JetBrains already did.

I say this as someone who was using ICorDebug 13 years ago.

Why would they support anything but Windows? Unless it's a bleeding edge tool, it predates .NET Core, and .net Core is still immature.
Exploring Bill Gates's Privates
No mention of the excellent LINQPad[1] or ilspy[2]? Both do decompilation, I use LINQPad a lot for quick sanity checks, although it's intended for database work I rarely actually use it for that. It'll also spit out IL code and expression trees.

ILSpy is a lightweight decompiler that you can just drop DLL files into to see their code. It has some nice analysis tools that allow you to find references and implementations. I associated .dll files with it so they open in ILSpy by default.

[1] https://www.linqpad.net/ [2] https://github.com/icsharpcode/ILSpy

You can plug Reflexil [0] into ILSpy for on-the-fly code patching. Then once you've got something going, you can (manually) port your changes over to a Mono.Cecil-based [1] patching program. This is how I hack up Unity games written with C#.

[0] http://reflexil.net/

[1] https://github.com/jbevain/cecil