diff options
Diffstat (limited to 'mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs')
-rw-r--r-- | mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs index 105ff4fb67..13096f0594 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs @@ -93,6 +93,7 @@ namespace Mono.Debugger.Soft public long catch_type_id; } + [Flags] enum ExceptionClauseFlags { None = 0x0, Filter = 0x1, @@ -149,6 +150,7 @@ namespace Mono.Debugger.Soft VALUE_TYPE_ID_TYPE = 0xf1 } + [Flags] enum InvokeFlags { NONE = 0x0, DISABLE_BREAKPOINTS = 0x1, @@ -220,6 +222,7 @@ namespace Mono.Debugger.Soft UNKNOWN = 4 } + [Flags] enum StackFrameFlags { NONE = 0, DEBUGGER_INVOKE = 1, @@ -285,6 +288,9 @@ namespace Mono.Debugger.Soft public bool Uncaught { get; set; } + public bool Subclasses { + get; set; + } } class AssemblyModifier : Modifier { @@ -342,6 +348,10 @@ namespace Mono.Debugger.Soft get; set; } + public int ExitCode { + get; set; + } + public EventInfo (EventType type, int req_id) { EventType = type; ReqId = req_id; @@ -395,7 +405,7 @@ namespace Mono.Debugger.Soft * with newer runtimes, and vice versa. */ internal const int MAJOR_VERSION = 2; - internal const int MINOR_VERSION = 24; + internal const int MINOR_VERSION = 27; enum WPSuspendPolicy { NONE = 0, @@ -546,6 +556,7 @@ namespace Mono.Debugger.Soft IS_INITIALIZED = 18 } + [Flags] enum BindingFlagsExtensions { BINDING_FLAGS_IGNORE_CASE = 0x70000000, } @@ -1218,82 +1229,71 @@ namespace Mono.Debugger.Soft EventType etype = (EventType)kind; + long thread_id = r.ReadId (); if (kind == EventKind.VM_START) { - long thread_id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id }; //EventHandler.VMStart (req_id, thread_id, null); } else if (kind == EventKind.VM_DEATH) { + int exit_code = 0; + if (Version.AtLeast (2, 27)) + exit_code = r.ReadInt (); //EventHandler.VMDeath (req_id, 0, null); - events [i] = new EventInfo (etype, req_id) { }; + events [i] = new EventInfo (etype, req_id) { ExitCode = exit_code }; } else if (kind == EventKind.THREAD_START) { - long thread_id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = thread_id }; //EventHandler.ThreadStart (req_id, thread_id, thread_id); } else if (kind == EventKind.THREAD_DEATH) { - long thread_id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = thread_id }; //EventHandler.ThreadDeath (req_id, thread_id, thread_id); } else if (kind == EventKind.ASSEMBLY_LOAD) { - long thread_id = r.ReadId (); long id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id }; //EventHandler.AssemblyLoad (req_id, thread_id, id); } else if (kind == EventKind.ASSEMBLY_UNLOAD) { - long thread_id = r.ReadId (); long id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id }; //EventHandler.AssemblyUnload (req_id, thread_id, id); } else if (kind == EventKind.TYPE_LOAD) { - long thread_id = r.ReadId (); long id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id }; //EventHandler.TypeLoad (req_id, thread_id, id); } else if (kind == EventKind.METHOD_ENTRY) { - long thread_id = r.ReadId (); long id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id }; //EventHandler.MethodEntry (req_id, thread_id, id); } else if (kind == EventKind.METHOD_EXIT) { - long thread_id = r.ReadId (); long id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id }; //EventHandler.MethodExit (req_id, thread_id, id); } else if (kind == EventKind.BREAKPOINT) { - long thread_id = r.ReadId (); long id = r.ReadId (); long loc = r.ReadLong (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id, Location = loc }; //EventHandler.Breakpoint (req_id, thread_id, id, loc); } else if (kind == EventKind.STEP) { - long thread_id = r.ReadId (); long id = r.ReadId (); long loc = r.ReadLong (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id, Location = loc }; //EventHandler.Step (req_id, thread_id, id, loc); } else if (kind == EventKind.EXCEPTION) { - long thread_id = r.ReadId (); long id = r.ReadId (); long loc = 0; // FIXME events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id, Location = loc }; //EventHandler.Exception (req_id, thread_id, id, loc); } else if (kind == EventKind.APPDOMAIN_CREATE) { - long thread_id = r.ReadId (); long id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id }; //EventHandler.AppDomainCreate (req_id, thread_id, id); } else if (kind == EventKind.APPDOMAIN_UNLOAD) { - long thread_id = r.ReadId (); long id = r.ReadId (); events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id }; //EventHandler.AppDomainUnload (req_id, thread_id, id); } else if (kind == EventKind.USER_BREAK) { - long thread_id = r.ReadId (); long id = 0; long loc = 0; events [i] = new EventInfo (etype, req_id) { ThreadId = thread_id, Id = id, Location = loc }; //EventHandler.Exception (req_id, thread_id, id, loc); } else if (kind == EventKind.USER_LOG) { - long thread_id = r.ReadId (); int level = r.ReadInt (); string category = r.ReadString (); string message = r.ReadString (); @@ -2174,6 +2174,11 @@ namespace Mono.Debugger.Soft } else if (!em.Caught || !em.Uncaught) { throw new NotSupportedException ("This request is not supported by the protocol version implemented by the debuggee."); } + if (Version.MajorVersion > 2 || Version.MinorVersion > 24) { + w.WriteBool (em.Subclasses); + } else if (!em.Subclasses) { + throw new NotSupportedException ("This request is not supported by the protocol version implemented by the debuggee."); + } } else if (mod is AssemblyModifier) { w.WriteByte ((byte)ModifierKind.ASSEMBLY_ONLY); var amod = (mod as AssemblyModifier); |