Updated MDbg GUI

I've updated the MDbg GUI. We'll be integrating this into the actual MDbg sample and it will all be available in the MDbg download. Here's a list of what's improved. I'll certainly post when the download site gets updated.

IL support
1) Added integrated IL view! It shows IL disassembly + native ranges + Source together.
2) Added real IL-level stepping (via F10 in the IL view)
3) Add IL/Native offset to callstack window

UI issues:
4) UI thread is now STA, as UI threads are supposed to be. Since ICorDebug is MTA, the UI thread now does cross thread communication to access ICorDebug. This was a huge threading overhaul underneath. The old model is described here. I'll blog about the new model at some point.
5) Variable inspection windows now do lazy expansion of an object tree. Previously, it auto-expanded to 5-deep. This is huge perf win and allows expanding to an arbitrary depth. You can now leave the auto window open and step without the perf killing things.
6) Added Shift+F5 for “Stop Debugging”. This is the same key mapping as VS. The prior MDbg gui saw S+F5 as just F5 and would do a “go”.
7) Allow multi-line input for Gui input. This is very useful for things like the Python extension that implement the console.
8) Added “.menu” command which lets you invoke GUI menu items from the command line.

Using RichEditBox:
9) Implemented IMDbgIO2 which allows highlighting in output string.
10) Added fonts to the output GUI window for different output types (stdout, error, input, meta information from gui)

Other:
11) Attach dialog now includes version of target column.
12) The GUI is FXcop clean.

Bug fixes:
1) Fixed background color in source window
2) Can now view Open Source dialog again because the UI thread is STA.

 

I guess that's a lot of work for just a sample that we don't want people using in production scenarios. I started off by fixing the STA issue (#4), and then adding the IL window (since that was just cool), and then decided to play around with RichEditBox because it was easy. I guess I just like writing in C#.