Ejemplo n.º 1
0
 private void UpdateCancelEvaluation(NuGenValueDisplayer valueDisplayer)
 {
     if (CancelValueFormattersDisplaying)
     {
         valueDisplayer.InterruptEvaluation();
     }
 }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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;
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
 private void ValueDisplayer_FieldEvaluated(NuGenValueDisplayer sender, NuGenFieldDefinition fieldDefinition, NuGenIValueFormatter fieldValueFormatter)
 {
     InvokeDisplayValueFormatter(fieldValueFormatter, sender.ParentNode);
     InvokeStepEvaluationProgress();
     UpdateCancelEvaluation(sender);
 }
Ejemplo n.º 6
0
 private void ValueDisplayer_EvaluatedNull(NuGenValueDisplayer sender, NuGenIValueFormatter nullValueFormatter)
 {
     InvokeDisplayValueFormatter(nullValueFormatter, sender.ParentNode);
     InvokeStepEvaluationProgress();
     UpdateCancelEvaluation(sender);
 }
Ejemplo n.º 7
0
 private void ValueDisplayer_ErrorOccurred(NuGenValueDisplayer sender, NuGenIValueFormatter errorFormatter)
 {
     InvokeDisplayValueFormatter(errorFormatter, sender.ParentNode);
     UpdateCancelEvaluation(sender);
 }
Ejemplo n.º 8
0
 private void ValueDisplayer_ArrayElementEvaluated(NuGenValueDisplayer sender, uint elementIndex, NuGenIValueFormatter elementValueFormatter)
 {
     InvokeDisplayValueFormatter(elementValueFormatter, sender.ParentNode);
     InvokeStepEvaluationProgress();
     UpdateCancelEvaluation(sender);
 }
Ejemplo n.º 9
0
		private void ValueDisplayer_EvaluatedNull(NuGenValueDisplayer sender, NuGenIValueFormatter nullValueFormatter)
		{
			InvokeDisplayValueFormatter(nullValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
Ejemplo n.º 10
0
		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);
			}
		}
Ejemplo n.º 11
0
 private void ValueDisplayer_StringValueEvaluated(NuGenValueDisplayer sender, NuGenIValueFormatter stringValueFormatter)
 {
     InvokeDisplayValueFormatter(stringValueFormatter, sender.ParentNode);
     UpdateCancelEvaluation(sender);
 }
Ejemplo n.º 12
0
		private void ValueDisplayer_StringValueEvaluated(NuGenValueDisplayer sender, NuGenIValueFormatter stringValueFormatter)
		{
			InvokeDisplayValueFormatter(stringValueFormatter, sender.ParentNode);
			UpdateCancelEvaluation(sender);
		}
Ejemplo n.º 13
0
		private void ValueDisplayer_ToStringEvaluated(NuGenValueDisplayer sender, NuGenMethodDefinition toStringMethodDef, NuGenIValueFormatter toStringValueFormatter)
		{
			InvokeDisplayValueFormatter(toStringValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
Ejemplo n.º 14
0
		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);
		}
Ejemplo n.º 15
0
		private void ValueDisplayer_PropertyEvaluated(NuGenValueDisplayer sender, NuGenProperty property, NuGenIValueFormatter propertyValueFormatter)
		{
			InvokeDisplayValueFormatter(propertyValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
Ejemplo n.º 16
0
		private void ValueDisplayer_FieldEvaluated(NuGenValueDisplayer sender, NuGenFieldDefinition fieldDefinition, NuGenIValueFormatter fieldValueFormatter)
		{
			InvokeDisplayValueFormatter(fieldValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
Ejemplo n.º 17
0
 private void ValueDisplayer_PropertyEvaluated(NuGenValueDisplayer sender, NuGenProperty property, NuGenIValueFormatter propertyValueFormatter)
 {
     InvokeDisplayValueFormatter(propertyValueFormatter, sender.ParentNode);
     InvokeStepEvaluationProgress();
     UpdateCancelEvaluation(sender);
 }
Ejemplo n.º 18
0
		private void UpdateCancelEvaluation(NuGenValueDisplayer valueDisplayer)
		{
			if (CancelValueFormattersDisplaying)
			{
				valueDisplayer.InterruptEvaluation();
			}
		}
Ejemplo n.º 19
0
        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);
        }
Ejemplo n.º 20
0
		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();
			}
		}
Ejemplo n.º 21
0
 private void ValueDisplayer_ToStringEvaluated(NuGenValueDisplayer sender, NuGenMethodDefinition toStringMethodDef, NuGenIValueFormatter toStringValueFormatter)
 {
     InvokeDisplayValueFormatter(toStringValueFormatter, sender.ParentNode);
     InvokeStepEvaluationProgress();
     UpdateCancelEvaluation(sender);
 }
Ejemplo n.º 22
0
		private void ValueDisplayer_ArrayElementEvaluated(NuGenValueDisplayer sender, uint elementIndex, NuGenIValueFormatter elementValueFormatter)
		{
			InvokeDisplayValueFormatter(elementValueFormatter, sender.ParentNode);
			InvokeStepEvaluationProgress();
			UpdateCancelEvaluation(sender);
		}
Ejemplo n.º 23
0
		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;
					}
				}
			}
		}
Ejemplo n.º 24
0
		private void ValueDisplayer_ErrorOccurred(NuGenValueDisplayer sender, NuGenIValueFormatter errorFormatter)
		{
			InvokeDisplayValueFormatter(errorFormatter, sender.ParentNode);
			UpdateCancelEvaluation(sender);
		}