/// <summary> /// Handle a modified breakpoint event. Only handles address changes. /// </summary> /// <param name="sender"></param> /// <param name="args"></param> public void BreakpointModified(object sender, EventArgs args) { MICore.Debugger.ResultEventArgs res = args as MICore.Debugger.ResultEventArgs; MICore.ResultValue bkpt = res.Results.Find("bkpt"); string bkptId = null; // // =breakpoint-modified, // bkpt ={number="2",type="breakpoint",disp="keep",enabled="y",addr="<MULTIPLE>",times="0",original-location="main.cpp:220"}, // { number="2.1",enabled="y",addr="0x9c2149a9",func="Foo::bar<int>(int)",file="main.cpp",fullname="C:\\\\...\\\\main.cpp",line="220",thread-groups=["i1"]}, // { number="2.2",enabled="y",addr="0x9c2149f2",func="Foo::bar<float>(float)",file="main.cpp",fullname="C:\\\\...\\\\main.cpp",line="220",thread-groups=["i1"]} // note: the ".x" part of the breakpoint number never appears in stopping events, that is, when executing at one of these addresses // the stopping event delivered contains bkptno="2" if (bkpt is MICore.ValueListValue) { MICore.ValueListValue list = bkpt as MICore.ValueListValue; bkptId = list.Content[0].FindString("number"); // 0 is the "<MULTIPLE>" entry } else { bkptId = bkpt.FindString("number"); } AD7PendingBreakpoint pending = _pendingBreakpoints.Find((p) => { return(p.BreakpointId == bkptId); }); if (pending == null) { return; } var bindList = pending.PendingBreakpoint.BindAddresses(bkpt); RebindAddresses(pending, bindList); }
public NamedResultValue(string name, ResultValue value) { this.Name = name; this.Value = value; }
public NamedResultValueTypeProxy(NamedResultValue namedResultValue) { _value = namedResultValue.Value; }