Visual Debugger for MSBuild Projects

Folks, Hi!

A recent feature poll on the MSBuild blog seems to indicate that a debugger for MSBuild projects is the #1 vNext request from you. Lot of other folks (such as here and here) have explicitly blogged about this requirement.

Over the last week I put together a Visual Debugger for MSBuild Projects. The v1 alpha feature list looks like:

v1 Feature Set:

  • Load project and arbitrary target files
  • Set/View build environment
  • Step-Into tasks and targets (F11), Run (F5), Break execution, Step into imported projects, step into CallTarget & MSBuild tasks, task & target batching
  • Set breakpoints on tasks and targets, delete/view breakpoints, locate breakpoints in code
  • View call stacks (esp. useful for stepping into CallTargets & MSBuild tasks), locate stack frame in code
  • View debugger messages, MSBuild traces in Output window
  • RO View of evaluated Items and Properties in break mode
  • Handles out-of-box VS2008 projects and complex Microsoft's Developer Divisions's MSBuild based builds
  • Requires only .NET Framework 3.5 RTM (no VS2008 required)

I have also uploaded the binaries and how-to-get-started instructions on https://www.codeplex.com/msbdbg.

Please head over there to give this a spin. I have also listed there the known issues, the v2 plans, and other details there.

I am looking forward to listening to you on the right, wrong, the good, bad, the ugly and anything else that you will care to tell me about.

I am hoping this will go some distance it helping everyone get away from printf debugging and get into full fledged debugging for MSBuild projects. Esp. considering MSBuild projects files are no longer used only for builds. (Why, my wife has even filed a patent for using MSBuild as a test harness)

Here are a few screen shots:

MSBuild Debugger Saying 'hello'...

opendbg  

Set Breakpoint and Select Target to Debug...
setbpandselecttargettodebug
Breakpoint Hit and Output Window...
bphitandoutputwindow
Break at Arbitrary Location, See Call Stack and Properties...
breakNcallstackNproperties
Step-In, See Items and Active Breakpoints...

stepinNitemsNbreakpoints