public static NameValuePair ToNameValuePair(this string data) { var split = data.Split(new[] {'='}, 2); var result = new NameValuePair(); result.Name = split[0]; result.Value = split[1]; if (result.Value[0] == '"') { result.Value = result.Value.RemoveBraces(); } return result; }
public static StopRecord FromArgumentList(NameValuePair[] arguments) { var result = new StopRecord(); foreach (var arg in arguments) { switch (arg.Name) { case "reason": result.Reason = arg.Value.ToStopReason(); break; case "frame": result.Frame = Frame.FromDataString(arg.Value); break; case "thread-id": result.ThreadId = Convert.ToUInt32(arg.Value); break; case "stopped-threads": result.StoppedThreads = arg.Value; break; case "bkptno": result.BreakPointNumber = Convert.ToUInt32(arg.Value); break; case "disp": result.KeepBreakPoint = arg.Value == "keep"; break; default: //Console.WriteLine ("Unimplemented stop record field detected."); break; } } return result; }
public static LiveBreakPoint FromArgumentList(NameValuePair[] argumentList) { var result = new LiveBreakPoint(); foreach (var argument in argumentList) { switch (argument.Name) { case "number": result.Number = Convert.ToInt32(argument.Value); break; case "type": if (argument.Value == "breakpoint") { result.Type = BreakPointType.BreakPoint; } else { throw new Exception("Breakpoint type not implmented."); } break; case "disp": result.Visible = argument.Value == "keep"; break; case "enabled": result.Enabled = argument.Value == "y"; break; case "addr": if (argument.Value != "<MULTIPLE>") { result.Address = Convert.ToUInt64(argument.Value.Replace("0x", ""), 16); } break; case "func": result.Function = argument.Value; break; case "file": result.File = argument.Value.Replace("\\\\", "\\").NormalizePath(); break; case "fullname": result.FullFileName = argument.Value.Replace("\\\\", "\\").NormalizePath(); break; case "line": result.Line = Convert.ToUInt32(argument.Value); break; case "times": result.HitCount = Convert.ToInt32(argument.Value); break; case "original-location": result.OriginalLocation = argument.Value; break; default: Console.WriteLine("Unknown field in breakpoint data"); break; } } return result; }