private void UpdateCancelEvaluation(NuGenValueDisplayer valueDisplayer) { if (CancelValueFormattersDisplaying) { valueDisplayer.InterruptEvaluation(); } }
public void ShowValue(NuGenBaseValueRefresher valueRefresher, FrameWrapper frame, string initialExpression) { if (frame == null) { MessageBox.Show("There is no active frame and thus expressions cannot be evaluated.\n\nFrames can be changed by using the Call Stack Panel", "No active frame", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { if (!IsHandleCreated) { CreateHandle(); } objectTree.Sorted = false; UpdateDisplayedValue = false; objectTree.SelectedNode = RootNode; UpdateDisplayedValue = true; NuGenIValueFormatter rootValueFormatter = new NuGenRootValueFormatter("Viewed object"); rootValueFormatter.ValueRefresher = valueRefresher; rootValueFormatter.FieldNode = RootNode; RootNode.Tag = rootValueFormatter; RootNode.Text = rootValueFormatter.Name; FrameRefresher = new NuGenFrameRefresher(NuGenDebugEventHandler.Instance.EventObjects.Thread, frame.ChainIndex, frame.FrameIndex, frame.IsActiveFrame); ProcessWrapper processWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.GetProcess(); NuGenEvaluationHandler evaluationHandler = new NuGenEvaluationHandler(FrameRefresher); EvalWrapper evalWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.CreateEval(); EvaluationContext = new NuGenEvaluationContext(processWrapper, evaluationHandler, evalWrapper, NuGenDebugEventHandler.Instance.EventObjects.Thread); ValueDisplayer = new NuGenValueDisplayer(evaluationContext); ValueDisplayer.ArrayElementEvaluated += new ArrayElementEvaluatedDelegate(ValueDisplayer_ArrayElementEvaluated); ValueDisplayer.ErrorOccurred += new ErrorOccurredDelegate(ValueDisplayer_ErrorOccurred); ValueDisplayer.EvaluatedNull += new EvaluatedNullDelegate(ValueDisplayer_EvaluatedNull); ValueDisplayer.FieldEvaluated += new FieldEvaluatedDelegate(ValueDisplayer_FieldEvaluated); ValueDisplayer.PropertyEvaluated += new PropertyEvaluatedDelegate(ValueDisplayer_PropertyEvaluated); ValueDisplayer.StateChanging += new StateChangingDelegate(ValueDisplayer_StateChanging); ValueDisplayer.StringValueEvaluated += new StringValueEvaluatedDelegate(ValueDisplayer_StringValueEvaluated); ValueDisplayer.ToStringEvaluated += new ToStringEvaluatedDelegate(ValueDisplayer_ToStringEvaluated); ValueDisplayer.TypeInspected += new TypeInspectedDelegate(ValueDisplayer_TypeInspected); if (valueRefresher != null) { DisplayValue(valueRefresher, RootNode); } fieldList.Sort(); objectTree.Sorted = true; DisplayExpressionText(initialExpression); expressionComboBox.Update(); ActiveControl = expressionComboBox; ShowDialog(); } }
protected override void OnInitializePanel() { base.OnInitializePanel(); if (NuGenDebugEventHandler.Instance.EventObjects.Thread != null) { if (ActiveFrame == null) { NuGenUIHandler.Instance.DisplayUserWarning("No stack frame information is available at the location."); } else if (!ActiveFrame.IsILFrame() && Mode != ObjectsPanelMode.Watch) { switch (Mode) { case ObjectsPanelMode.Arguments: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore arguments are not available."); break; case ObjectsPanelMode.AutoObjects: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore auto objects are not available."); break; case ObjectsPanelMode.LocalVariables: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore local variables are not available."); break; } } else { EvalWrapper evalWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.CreateEval(); EvaluationContext = new NuGenEvaluationContext(NuGenDebugEventHandler.Instance.EventObjects.Process, new NuGenEvaluationHandler(ActiveFrameRefresher), evalWrapper, NuGenDebugEventHandler.Instance.EventObjects.Thread); ValueDisplayer = new NuGenValueDisplayer(EvaluationContext); switch (Mode) { case ObjectsPanelMode.Arguments: DisplayArguments(); break; case ObjectsPanelMode.AutoObjects: DisplayCurrentException(); break; case ObjectsPanelMode.LocalVariables: DisplayLocalVariables(); break; case ObjectsPanelMode.Watch: DisplayWatchExpressions(); break; } } } }
private void ValueDisplayer_TypeInspected(NuGenValueDisplayer sender, NuGenTypeDefinition typeDefinition) { InvokeDisplayEvaluationState(string.Format("Type inspected: {0} (assembly name: {1})", typeDefinition.FullName, typeDefinition.ModuleScope.Assembly.FileName), 1); UpdateCancelEvaluation(sender); if (!IsTypeOfValueFound) { IsTypeOfValueFound = true; NuGenStringValueFormatter objectTypeValueFormatter = new NuGenStringValueFormatter(typeDefinition.FullName); objectTypeValueFormatter.FieldGroup = ValueFieldGroup.ObjectInformation; objectTypeValueFormatter.Name = "Type of value"; InvokeDisplayValueFormatter(objectTypeValueFormatter, sender.ParentNode); } }
private void ValueDisplayer_FieldEvaluated(NuGenValueDisplayer sender, NuGenFieldDefinition fieldDefinition, NuGenIValueFormatter fieldValueFormatter) { InvokeDisplayValueFormatter(fieldValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_EvaluatedNull(NuGenValueDisplayer sender, NuGenIValueFormatter nullValueFormatter) { InvokeDisplayValueFormatter(nullValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_ErrorOccurred(NuGenValueDisplayer sender, NuGenIValueFormatter errorFormatter) { InvokeDisplayValueFormatter(errorFormatter, sender.ParentNode); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_ArrayElementEvaluated(NuGenValueDisplayer sender, uint elementIndex, NuGenIValueFormatter elementValueFormatter) { InvokeDisplayValueFormatter(elementValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_EvaluatedNull(NuGenValueDisplayer sender, NuGenIValueFormatter nullValueFormatter) { InvokeDisplayValueFormatter(nullValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_TypeInspected(NuGenValueDisplayer sender, NuGenTypeDefinition typeDefinition) { InvokeDisplayEvaluationState(string.Format("Type inspected: {0} (assembly name: {1})", typeDefinition.FullName, typeDefinition.ModuleScope.Assembly.FileName), 1); UpdateCancelEvaluation(sender); if (!IsTypeOfValueFound) { IsTypeOfValueFound = true; NuGenStringValueFormatter objectTypeValueFormatter = new NuGenStringValueFormatter(typeDefinition.FullName); objectTypeValueFormatter.FieldGroup = ValueFieldGroup.ObjectInformation; objectTypeValueFormatter.Name = "Type of value"; InvokeDisplayValueFormatter(objectTypeValueFormatter, sender.ParentNode); } }
private void ValueDisplayer_StringValueEvaluated(NuGenValueDisplayer sender, NuGenIValueFormatter stringValueFormatter) { InvokeDisplayValueFormatter(stringValueFormatter, sender.ParentNode); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_StringValueEvaluated(NuGenValueDisplayer sender, NuGenIValueFormatter stringValueFormatter) { InvokeDisplayValueFormatter(stringValueFormatter, sender.ParentNode); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_ToStringEvaluated(NuGenValueDisplayer sender, NuGenMethodDefinition toStringMethodDef, NuGenIValueFormatter toStringValueFormatter) { InvokeDisplayValueFormatter(toStringValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_StateChanging(NuGenValueDisplayer sender, ValueDisplayerState state, int stepCount) { switch (state) { case ValueDisplayerState.Initialize: InvokeDisplayEvaluationState("Initializing a new thread to inspect the value...", stepCount); break; case ValueDisplayerState.StartThread: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Starting new thread to inspect the value...", stepCount); break; case ValueDisplayerState.CollectTypeInformation: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Collecting information about the base types of the value...", stepCount); break; case ValueDisplayerState.EvaluateArrayElements: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Evaluating elements of the array value...", stepCount); break; case ValueDisplayerState.EvaluateStringValue: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Evaluating string value...", stepCount); break; case ValueDisplayerState.EvaluateFields: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Evaluating fields of the object value...", stepCount); break; case ValueDisplayerState.EvaluateProperties: InvokeDisplayEvaluationState("Evaluating properties of the object value....", stepCount); break; case ValueDisplayerState.EvaluateToString: InvokeDisplayEvaluationState("Evaluating ToString() method of the object value...", stepCount); break; case ValueDisplayerState.Finish: string message = "Evaluation of the value is finished."; if (MissingModules.Count > 0) { message += " Not every information is displayed because some modules are not added to the project!"; } InvokeDisplayEvaluationState(message, stepCount); InvokeEnableControlsForEvaluation(true); break; case ValueDisplayerState.Interrupted: InvokeDisplayEvaluationState("Evaluation of the value has been stopped by the user, therefore not every information is displayed!", stepCount); InvokeEnableControlsForEvaluation(true); break; case ValueDisplayerState.MethodCallAbortFailed: InvokeDisplayEvaluationState("Not every information is displayed because aborting an evaluation failed. Both the debugger and the debuggee can be in an unstable state!", stepCount); InvokeEnableControlsForEvaluation(true); break; } UpdateCancelEvaluation(sender); }
private void ValueDisplayer_PropertyEvaluated(NuGenValueDisplayer sender, NuGenProperty property, NuGenIValueFormatter propertyValueFormatter) { InvokeDisplayValueFormatter(propertyValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_FieldEvaluated(NuGenValueDisplayer sender, NuGenFieldDefinition fieldDefinition, NuGenIValueFormatter fieldValueFormatter) { InvokeDisplayValueFormatter(fieldValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_PropertyEvaluated(NuGenValueDisplayer sender, NuGenProperty property, NuGenIValueFormatter propertyValueFormatter) { InvokeDisplayValueFormatter(propertyValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void UpdateCancelEvaluation(NuGenValueDisplayer valueDisplayer) { if (CancelValueFormattersDisplaying) { valueDisplayer.InterruptEvaluation(); } }
private void ValueDisplayer_StateChanging(NuGenValueDisplayer sender, ValueDisplayerState state, int stepCount) { switch (state) { case ValueDisplayerState.Initialize: InvokeDisplayEvaluationState("Initializing a new thread to inspect the value...", stepCount); break; case ValueDisplayerState.StartThread: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Starting new thread to inspect the value...", stepCount); break; case ValueDisplayerState.CollectTypeInformation: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Collecting information about the base types of the value...", stepCount); break; case ValueDisplayerState.EvaluateArrayElements: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Evaluating elements of the array value...", stepCount); break; case ValueDisplayerState.EvaluateStringValue: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Evaluating string value...", stepCount); break; case ValueDisplayerState.EvaluateFields: InvokeStepEvaluationProgress(); InvokeDisplayEvaluationState("Evaluating fields of the object value...", stepCount); break; case ValueDisplayerState.EvaluateProperties: InvokeDisplayEvaluationState("Evaluating properties of the object value....", stepCount); break; case ValueDisplayerState.EvaluateToString: InvokeDisplayEvaluationState("Evaluating ToString() method of the object value...", stepCount); break; case ValueDisplayerState.Finish: string message = "Evaluation of the value is finished."; if (MissingModules.Count > 0) { message += " Not every information is displayed because some modules are not added to the project!"; } InvokeDisplayEvaluationState(message, stepCount); InvokeEnableControlsForEvaluation(true); break; case ValueDisplayerState.Interrupted: InvokeDisplayEvaluationState("Evaluation of the value has been stopped by the user, therefore not every information is displayed!", stepCount); InvokeEnableControlsForEvaluation(true); break; case ValueDisplayerState.MethodCallAbortFailed: InvokeDisplayEvaluationState("Not every information is displayed because aborting an evaluation failed. Both the debugger and the debuggee can be in an unstable state!", stepCount); InvokeEnableControlsForEvaluation(true); break; } UpdateCancelEvaluation(sender); }
public void ShowValue(NuGenBaseValueRefresher valueRefresher, FrameWrapper frame, string initialExpression) { if (frame == null) { MessageBox.Show("There is no active frame and thus expressions cannot be evaluated.\n\nFrames can be changed by using the Call Stack Panel", "No active frame", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { if (!IsHandleCreated) { CreateHandle(); } objectTree.Sorted = false; UpdateDisplayedValue = false; objectTree.SelectedNode = RootNode; UpdateDisplayedValue = true; NuGenIValueFormatter rootValueFormatter = new NuGenRootValueFormatter("Viewed object"); rootValueFormatter.ValueRefresher = valueRefresher; rootValueFormatter.FieldNode = RootNode; RootNode.Tag = rootValueFormatter; RootNode.Text = rootValueFormatter.Name; FrameRefresher = new NuGenFrameRefresher(NuGenDebugEventHandler.Instance.EventObjects.Thread, frame.ChainIndex, frame.FrameIndex, frame.IsActiveFrame); ProcessWrapper processWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.GetProcess(); NuGenEvaluationHandler evaluationHandler = new NuGenEvaluationHandler(FrameRefresher); EvalWrapper evalWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.CreateEval(); EvaluationContext = new NuGenEvaluationContext(processWrapper, evaluationHandler, evalWrapper, NuGenDebugEventHandler.Instance.EventObjects.Thread); ValueDisplayer = new NuGenValueDisplayer(evaluationContext); ValueDisplayer.ArrayElementEvaluated += new ArrayElementEvaluatedDelegate(ValueDisplayer_ArrayElementEvaluated); ValueDisplayer.ErrorOccurred += new ErrorOccurredDelegate(ValueDisplayer_ErrorOccurred); ValueDisplayer.EvaluatedNull += new EvaluatedNullDelegate(ValueDisplayer_EvaluatedNull); ValueDisplayer.FieldEvaluated += new FieldEvaluatedDelegate(ValueDisplayer_FieldEvaluated); ValueDisplayer.PropertyEvaluated += new PropertyEvaluatedDelegate(ValueDisplayer_PropertyEvaluated); ValueDisplayer.StateChanging += new StateChangingDelegate(ValueDisplayer_StateChanging); ValueDisplayer.StringValueEvaluated += new StringValueEvaluatedDelegate(ValueDisplayer_StringValueEvaluated); ValueDisplayer.ToStringEvaluated += new ToStringEvaluatedDelegate(ValueDisplayer_ToStringEvaluated); ValueDisplayer.TypeInspected += new TypeInspectedDelegate(ValueDisplayer_TypeInspected); if (valueRefresher != null) { DisplayValue(valueRefresher, RootNode); } fieldList.Sort(); objectTree.Sorted = true; DisplayExpressionText(initialExpression); expressionComboBox.Update(); ActiveControl = expressionComboBox; ShowDialog(); } }
private void ValueDisplayer_ToStringEvaluated(NuGenValueDisplayer sender, NuGenMethodDefinition toStringMethodDef, NuGenIValueFormatter toStringValueFormatter) { InvokeDisplayValueFormatter(toStringValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
private void ValueDisplayer_ArrayElementEvaluated(NuGenValueDisplayer sender, uint elementIndex, NuGenIValueFormatter elementValueFormatter) { InvokeDisplayValueFormatter(elementValueFormatter, sender.ParentNode); InvokeStepEvaluationProgress(); UpdateCancelEvaluation(sender); }
protected override void OnInitializePanel() { base.OnInitializePanel(); if (NuGenDebugEventHandler.Instance.EventObjects.Thread != null) { if (ActiveFrame == null) { NuGenUIHandler.Instance.DisplayUserWarning("No stack frame information is available at the location."); } else if (!ActiveFrame.IsILFrame() && Mode != ObjectsPanelMode.Watch) { switch(Mode) { case ObjectsPanelMode.Arguments: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore arguments are not available."); break; case ObjectsPanelMode.AutoObjects: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore auto objects are not available."); break; case ObjectsPanelMode.LocalVariables: NuGenUIHandler.Instance.DisplayUserWarning("The current frame is native therefore local variables are not available."); break; } } else { EvalWrapper evalWrapper = NuGenDebugEventHandler.Instance.EventObjects.Thread.CreateEval(); EvaluationContext = new NuGenEvaluationContext(NuGenDebugEventHandler.Instance.EventObjects.Process, new NuGenEvaluationHandler(ActiveFrameRefresher), evalWrapper, NuGenDebugEventHandler.Instance.EventObjects.Thread); ValueDisplayer = new NuGenValueDisplayer(EvaluationContext); switch (Mode) { case ObjectsPanelMode.Arguments: DisplayArguments(); break; case ObjectsPanelMode.AutoObjects: DisplayCurrentException(); break; case ObjectsPanelMode.LocalVariables: DisplayLocalVariables(); break; case ObjectsPanelMode.Watch: DisplayWatchExpressions(); break; } } } }
private void ValueDisplayer_ErrorOccurred(NuGenValueDisplayer sender, NuGenIValueFormatter errorFormatter) { InvokeDisplayValueFormatter(errorFormatter, sender.ParentNode); UpdateCancelEvaluation(sender); }