[Mono-dev] [Mono-patches] r128544 - in trunk/mono/mono: metadata mini

Martin Baulig martin at ximian.com
Wed Mar 4 10:39:32 EST 2009

On Wed, 2009-03-04 at 11:34 -0300, Rodrigo Kumpera wrote:

> On Wed, Mar 4, 2009 at 11:16 AM, Martin Baulig
> <mono-patches-list at lists.ximian.com> wrote:
>         Author: martin
>         Date: 2009-03-04 09:16:55 -0500 (Wed, 04 Mar 2009)
>         New Revision: 128544
>         Modified:
>           trunk/mono/mono/mini/exceptions-amd64.c
>           trunk/mono/mono/mini/exceptions-x86.c
> Both these files have a nearly identical debugger_handle_exception
> function. Please move it to an arch neutral file
> and, if you need so, add new mono_arch calls to handle the
> non-portable parts. If you're in doubt how to proceed with
> this, please ask.

Hi Rodrigo,

I moved that into debug-mini.c and also cleaned up the API a lot and
added some more documentation.

There are now only two public API entry points:
mono_debugger_handle_exception() and
mono_debugger_call_exception_handler() and they also have some API
> On a side note, most of this code deviates a lot from how a hard-mode
> debugger operates, is it your intention to move
> mdb to be a soft-mode debugger?

What do you mean by hard mode or soft mode ?

My intention was simply cleaning up and improving the badly broken old
API, which never really worked wrt unhandled exception.

For instance, in the old code, we were not telling the debugger the
correct %eip and %esp when calling it from inside
mono_handle_exception_internal() - because only the arch-specific code
could know that.

The other big change is that the debugger may now decide whether it
wants to stop when the exception is thrown or only if it's
user-unhandled - this was required by MonoVS.

Besides that, I also fixed all the race conditions where two or more
threads were throwing exceptions - or if the user did a func-eval while
stopped at the exception.


More information about the Mono-devel-list mailing list