[Mono-dev] On the debugger.
Miguel de Icaza
miguel at novell.com
Mon Nov 5 11:09:38 EST 2007
> Debugging – how to debug on Linux with breakpoints using c#?
> If this requires building mono from source, what compilation flags
> need setting?
The story of the debugger is a bit complicated. A year ago we decided
that we would aim for a "1.0" release that had a number of features.
You can see the plan here:
The UI of the debugger was based on casual use of the debugger as we did
not really have anyone using it on a day-to-day basis. So we kind of
added things as we thought they were needed.
The debugger did not have users in part because it was not very stable,
so debugging was usually harder with the debugger than without it. So
feedback on improving it was slow.
Some bits became very hard to support, and we did not even know about
them last year when we wrote the plan: support for AppDomains (needed
for ASP.NET) and generics turned out to require support in the debugger
to have the same method JITed multiple times (in AppDomains, because you
can have the same method JITed once per AppDomain and with generics,
because each instantiation would be different).
This turned out to be a large chunk of work.
But there were many other examples of problems that we have ran into in
the last year that have slowed down the debugger release.
To complicate things, the debugger was never really released in sync
with the runtime, which meant that the debugger for the better part of
the year only worked if you had SVN releases of Mono.
The in the last two months some important work to reduce memory usage in
generic cases caused a big restructuring in Mono to happen (all of this
will be in 1.2.6). The memory savings are very significant (and very
important as apps start to use more and mono generics), but this
required a new batch of changes to the debugger.
So our goal to have a debugger that worked against 1.2.5 could not
really be realized. We are now hoping that the upcoming 1.2.6 will
work for the first time with a released debugger and start getting
feedback on it.
At this point most of the features that we need for what should be
considered a 1.0 are done (AppDomains and generic debugging support) so
we should be closer to have a working debugger.
More information about the Mono-devel-list