Debugger Goodies in VS 2005 Beta 1

Visual Studio 2005 Beta 1 is announced at last! Previously known as Whidbey (and internally it will forever known as Whidbey, as 7.1 is forever Everett, as 7.0 is, er, 7.0) this beta is going to be available to MSDN Universal subscribers, and some other ways too (see later). Here's what I am excited about in the debugger:

New DataTips. Remember back to Visual C++ 4.0 (I think) that first brought you DataTips? Well think of those same tips, but on crack, and you get New Datatips. You can inspect whole objects in the datatips now, kind of a floating Watch window. It is the most important improvement to the debugger since, well, since VC2 really.

Tracepoints. A tracepoint is a breakpoint that doesn’t stop. Huh you say? Well instead of stopping, they print messages. Anything you like, including text, variables, stack traces, anything you like really. They are a great way to add logging to code without having to rebuild a thing. You can read more about Tracepoints in John's blog: he wrote the code (a long time ago when he was on our team) and he's so happy they finally made it into a product.

Source file checksums. Ever got the debugger confused by having two different source files with the same name but in different paths? We have, and lots of other people too (especially default.aspx). The confusion is over: the C++, C# and VB compilers now emit a checksum of the source file into the debug info, so the debugger can tell if it got the right version or not. This makes breakpoints bind to the right source file even in the case of multiple matching basenames, something that has troubled us (and users) forever. (Note that checksums are not generated for ASP.NET compiles in beta 1).

Visualizers. Using a complex managed type that is ugly to view in the Watch window (e.g. DataSet)? Now you can either use a built-in Visualizer, or write your own. For DataSet you see the data in a proper grid control, for example. You can view long strings in a text editor, or an XML viewer if you like. If you want to write your own Visualizer for your type, or a Frameworks type, go right ahead. It just takes a bit of C#.

STL Data Display. STL types have always been a challenge for the debugger. In VC6 the debug format truncated the managled names at 255 bytes so you often couldn’t even manually look at the structure of some STL objects. We fixed that in 7.0, but ugly data structures are still ugly even if you can see more of them. VS Whidbey has a meta-language that lets you define exactly how to display complex types and includes support for all the common STL types. A hash table displays as an array in the debugger now, instead of that ugly thing it really is.

64-bit Support. Both native and managed debuggers support AMD64 and IA64 debugging now, with good feature parity with 32-bit, though no Edit & Continue or Mixed debugging.

Intellisense in the Debugger Windows. The debugger windows (like Watch and Locals) now support Intellisense, for C# and VB users. You're gonna love that.

Edit and Continue. At last VB users can edit their code while debugging, and the change will occur right then, without having to restart the debugger. C# users please see my old blog about why you can't do this (yet).

After beta 1 we don’t have much in the way of new debugger features, sorry, we have to mostly crank up the robustness and performance so we can ship this for real. We've got one new feature coming though that you will love. Can't tell you what though, sorry. Gotta get back to implementing it…

You can find more info about VS 2005 beta 1 here soon I hope, plus there are the new Express versions for immediate download here. The Express SKUs have a simplified debugger, so you wont get every new feature listed here, but you are welcome to download whichever one grabs you and take the new debugger for a spin. Let me know what you think.