X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FMono.Debugger.Soft%2FMono.Debugger.Soft%2FConnection.cs;h=a5b902db57322eaff402889d0becf162902b735b;hb=2b26601921e81cb719bc8df5156375c62c4620ab;hp=02ae6814cbfcc3254b8206ce2786be062fbf3907;hpb=0b4bc83e79ca3057693089dc7f926004bb9d9592;p=mono.git 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 02ae6814cbf..a5b902db573 100644 --- a/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs +++ b/mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs @@ -117,6 +117,8 @@ namespace Mono.Debugger.Soft public string[] names; public int[] live_range_start; public int[] live_range_end; + public int[] scopes_start; + public int[] scopes_end; } struct PropInfo { @@ -382,7 +384,8 @@ namespace Mono.Debugger.Soft ERR_UNLOADED = 103, ERR_NO_INVOCATION = 104, ABSENT_INFORMATION = 105, - NO_SEQ_POINT_AT_IL_OFFSET = 106 + NO_SEQ_POINT_AT_IL_OFFSET = 106, + INVOKE_ABORTED = 107 } public class ErrorHandlerEventArgs : EventArgs { @@ -417,7 +420,7 @@ namespace Mono.Debugger.Soft * with newer runtimes, and vice versa. */ internal const int MAJOR_VERSION = 2; - internal const int MINOR_VERSION = 40; + internal const int MINOR_VERSION = 44; enum WPSuspendPolicy { NONE = 0, @@ -587,6 +590,7 @@ namespace Mono.Debugger.Soft GET_THIS = 2, SET_VALUES = 3, GET_DOMAIN = 4, + SET_THIS = 5, } enum CmdArrayRef { @@ -801,6 +805,13 @@ namespace Mono.Debugger.Soft return res; } + public string ReadUTF16String () { + int len = decode_int (packet, ref offset); + string res = new String (Encoding.Unicode.GetChars (packet, offset, len)); + offset += len; + return res; + } + public ValueImpl ReadValue () { ElementType etype = (ElementType)ReadByte (); @@ -1902,6 +1913,19 @@ namespace Mono.Debugger.Soft var res = SendReceive (CommandSet.METHOD, (int)CmdMethod.GET_LOCALS_INFO, new PacketWriter ().WriteId (id)); LocalsInfo info = new LocalsInfo (); + + if (Version.AtLeast (2, 43)) { + int nscopes = res.ReadInt (); + info.scopes_start = new int [nscopes]; + info.scopes_end = new int [nscopes]; + int last_start = 0; + for (int i = 0; i < nscopes; ++i) { + info.scopes_start [i] = last_start + res.ReadInt (); + info.scopes_end [i] = info.scopes_start [i] + res.ReadInt (); + last_start = info.scopes_start [i]; + } + } + int nlocals = res.ReadInt (); info.types = new long [nlocals]; for (int i = 0; i < nlocals; ++i) @@ -2387,6 +2411,10 @@ namespace Mono.Debugger.Soft return SendReceive (CommandSet.STACK_FRAME, (int)CmdStackFrame.GET_DOMAIN, new PacketWriter ().WriteId (thread_id).WriteId (id)).ReadId (); } + internal void StackFrame_SetThis (long thread_id, long id, ValueImpl value) { + SendReceive (CommandSet.STACK_FRAME, (int)CmdStackFrame.SET_THIS, new PacketWriter ().WriteId (thread_id).WriteId (id).WriteValue (value)); + } + /* * ARRAYS */ @@ -2418,7 +2446,16 @@ namespace Mono.Debugger.Soft * STRINGS */ internal string String_GetValue (long id) { - return SendReceive (CommandSet.STRING_REF, (int)CmdStringRef.GET_VALUE, new PacketWriter ().WriteId (id)).ReadString (); + var r = SendReceive (CommandSet.STRING_REF, (int)CmdStringRef.GET_VALUE, new PacketWriter ().WriteId (id)); + + bool is_utf16 = false; + if (Version.AtLeast (2, 41)) + is_utf16 = r.ReadByte () == 1; + + if (is_utf16) + return r.ReadUTF16String (); + else + return r.ReadString (); } internal int String_GetLength (long id) {