Last october, Radek Polak suddenly announced that now dotgnu has a debugger. As much as that was good news, it still didn't fit in easily with the current design where the debugger works over the wire. On wire debug protocols are all the rage these days and for good reason, except that a few too many exist in some places. The new debugger backend is checked into Portable Studio SVN for those interested in the nitty gritty details. Here's a sample debug session.
The server is running at port 4571 Waiting for a connection... Connection accepted -------------------------------------- Shortcuts for recently used commands 0. watch_method PrintFn 1. unwatch_method PrintFn 2. list_threads 3. unwatch_all 4. stack_trace 5. print_locals 6. dasm 7. watch_location simple.cs 2 8. watch_all 9. watch_method Main -------------------------------------- > l <DebuggerResponse> <Breakpoint Offset="-1"> <Location Linenum="0" Col="0"><SourceFile Filename="" /></Location> <Member MemberName=".ctor" Owner="$Synthetic.$164"> <MemberSignature Language="ILASM" Value="public hidebysig specialname rtspecialname instance void .ctor(int32) runtime managed "/> <MemberType>Constructor</MemberType> </Member> </Breakpoint> </DebuggerResponse> > print_locals <DebuggerResponse> <LocalVariables> <LocalVariable Value="10" /> <LocalVariable Value="0" /> <LocalVariable Value="0" /> </LocalVariables> </DebuggerResponse>
That is the raw debugger protocol dump, now I'll just wait for Radek (or someone else) to slap a pretty UI on top of that. In all probabilty, Portable Studio will let me debug dotgnu code without all the hassles we've been going through for the past few years.
Developer tools are the crack cocaine of the software world. One try and you're hooked.
--Debugging is over when people get tired of doing it.