The Mdbg (a managed debugging written in pure C#) sample, which includes full source, has now been updated and released. The previous sample was for beta 1. This new sample has been updated for Whidbey beta 2 and will also be compatible with the final Whidbey release. The old mdbg beta 1 source sample is now obsolete.
Update: The old URL is obsolete. The new URL appears to be here.
I just downloaded and built it to verify (make sure that you install it into its own directory and not on top of a previous Mdbg install). Many thanks should go to Jan Stranik and Rick Byers for their Mdbg work in making this happen.
It does not contain my updated Mdbg winforms gui. We want to roll that back into the sample, but plan to do so at a later date so that we didn’t delay releasing this sample any longer.
To put this in perspective, we effectively have 2 Mdbg lines: the Sample and the SDK-version.
|The Sample||The SDK version|
|Primary Goal?||Provide hobbyists sample usage of the ICorDebug API via managed wrappers. This sample uses completely public interfaces.||Maintain feature parity with the old Cordbg that we removed from the SDK. (Remember this?)|
|What’s included?||Includes all source, VS buildable solution||Binaries only. Source not included|
|Prerequisites?||Only requires that the .Net Frameworks are installed. Does not require the SDK.||Part of the SDK, so the SDK is installed.|
|Deployed dlls?||Multiple dlls (Corapi, CorApi2, MdbgEng, MdbgExt) since there is no IL linker in the redist. See here for details.|
Does not include a native disassembler.
|Dlls linked into MdbgCore.dll. Includes native-disassembly functionality (in MdbgDis.dll) on par with Cordbg’s functionality. Since the deployed dlls are different, a single extension may not be able to target both the sample and the sdk.|
|Extensions?||Includes helpful extension dlls (such as primitive GUI and IL diassembler)||No extension dlls included with (beyond MdbgDis.dll for native disassembly). This is because the SDK version was just trying to match old Cordbg feature parity|
|Release schedule?||Whenever we feel like it. This should include after major CLR releases. There are currently two releases here: The beta 1 sample, and now the beta2/RTM sample.||Ships as part of SDK. There is currently 1 release here for the beta 2 SDK. It will remain in the SDK until it is deprecated (which currently won’t happen until Windbg has real managed-debugging support)|
So there are now several Mdbg’s floating around:
1.) MDbg Beta 1 source-sample. This was the first release of Mdbg. This sample only works on Beta 1 and is now obsolete. The download link has been updated to point to the beta2 sample.
2.) MDbg in Beta 2 SDK. This was a binary-only sample (no source include) and marks that MDbg is now officially part of the CLR’s SDK. This version also has a bunch of extra fixes on top of the Beta 1 release.
3.) MDbg Beta 2 source-sample. That’s what I’m blogging about here.
I allude here to some issues upgrading extensions from beta 1 to beta 2 or between switching between the sample and the sdk version.