public static void InvokeAddCondition() { if (bcf == null) { bcf = new BreakpointConditionForm(); Form1StringResources.SetTextForAllControls(bcf); } BreakpointInfo bi = null; Breakpoint br = breakpoints[cur_bookmark]; if (breakpoints_conditions.TryGetValue(br, out bi)) { bcf.IsConditionEnabled = bi.enabled; bcf.Condition = bi.condition; if (bi.kind == hit_kind.is_true) { bcf.IfTrue = true; } else { bcf.IfChanged = true; } } else { bcf.IsConditionEnabled = true; bcf.Condition = ""; bcf.IfTrue = true; } if (bcf.ShowDialog() == DialogResult.OK) { if (bi == null) { bi = new BreakpointInfo(); breakpoints_conditions.Add(br, bi); } bi.enabled = bcf.IsConditionEnabled; bi.condition = bcf.Condition; if (bcf.IfTrue) { bi.kind = hit_kind.is_true; } else { bi.kind = hit_kind.changed; } cur_bookmark.IsOnCondition = bi.enabled && !string.IsNullOrEmpty(bi.condition.Trim(' ', '\t')); } }
public static bool MustHit(Breakpoint br) { BreakpointInfo bi = null; if (breakpoints_conditions.TryGetValue(br, out bi)) { if (!bi.enabled) { return(true); } string cond = bi.condition.Trim(' ', '\t'); if (string.IsNullOrEmpty(cond)) { return(true); } try { RetValue res = WorkbenchServiceFactory.DebuggerManager.Evaluate(cond); if (bi.kind == hit_kind.is_true) { if (res.prim_val != null && res.prim_val is bool) { if ((bool)res.prim_val) { return(true); } else { return(false); } } else if (res.obj_val != null && res.obj_val.IsPrimitive && res.obj_val.PrimitiveValue is bool) { if ((bool)res.obj_val.PrimitiveValue) { return(true); } else { return(false); } } else { return(true); } } else { if (res.obj_val != null && res.obj_val.IsPrimitive) { res.prim_val = res.obj_val.PrimitiveValue; res.obj_val = null; } if (!WorkbenchServiceFactory.DebuggerManager.evaluator.IsEqual(res, bi.val)) { bi.val = res; return(true); } else { return(false); } } } catch { return(true); } } else { return(true); } }
public static void InvokeAddCondition() { if (bcf == null) { bcf = new BreakpointConditionForm(); Form1StringResources.SetTextForAllControls(bcf); } BreakpointInfo bi = null; Breakpoint br = breakpoints[cur_bookmark]; if (breakpoints_conditions.TryGetValue(br,out bi)) { bcf.IsConditionEnabled = bi.enabled; bcf.Condition = bi.condition; if (bi.kind == hit_kind.is_true) bcf.IfTrue = true; else bcf.IfChanged = true; } else { bcf.IsConditionEnabled = true; bcf.Condition = ""; bcf.IfTrue = true; } if (bcf.ShowDialog() == DialogResult.OK) { if (bi == null) { bi = new BreakpointInfo(); breakpoints_conditions.Add(br,bi); } bi.enabled = bcf.IsConditionEnabled; bi.condition = bcf.Condition; if (bcf.IfTrue) bi.kind = hit_kind.is_true; else bi.kind = hit_kind.changed; cur_bookmark.IsOnCondition = bi.enabled && !string.IsNullOrEmpty(bi.condition.Trim(' ','\t')); } }