Exemplo n.º 1
0
        void GoToStatement(CallStackItem item)
        {
            if (null == item)
            {
                return;
            }
            StackFrameStatementManager.SelectedFrame = item.FrameNumber;

            var debugModule = item.Frame.MethodInfo.DebugModule;
            var module      = MainWindow.Instance.LoadAssembly(debugModule.AssemblyFullPath, debugModule.FullPath).ModuleDefinition as ModuleDefMD;

            if (module == null)
            {
                return;
            }

            IMemberRef mr = module.ResolveToken(item.Token) as IMemberRef;

            if (mr == null)
            {
                return;
            }
            if (Keyboard.Modifiers == ModifierKeys.Control || Keyboard.Modifiers == ModifierKeys.Shift)
            {
                MainWindow.Instance.OpenNewEmptyTab();
            }
            var textView = MainWindow.Instance.SafeActiveTextView;

            if (DebugUtils.JumpTo(textView, mr, item.MethodKey, item.ILOffset))
            {
                MainWindow.Instance.SetTextEditorFocus(textView);
            }
        }
Exemplo n.º 2
0
        IList <CallStackItem> CreateItems(Process debuggedProcess)
        {
            List <CallStackItem> items = new List <CallStackItem>();
            int frameNumber            = 0;

            foreach (StackFrame frame in debuggedProcess.SelectedThread.GetCallstack(100))
            {
                CallStackItem item;

                item = new CallStackItem()
                {
                    FrameNumber    = frameNumber,
                    Name           = GetFullName(frame),
                    ModuleName     = frame.MethodInfo.DebugModule.ToString(),
                    Token          = (uint)frame.MethodInfo.MetadataToken,
                    ILOffset       = frame.IP.IsValid ? frame.IP.Offset : -1,
                    ILOffsetString = frame.IP.IsValid ? string.Format("0x{0:X4}", frame.IP.Offset) : "????",
                    MethodKey      = frame.MethodInfo.ToMethodKey(),
                };
                if (frameNumber == 0)
                {
                    item.Image = ImageService.GetImage("CurrentLine", BackgroundType.GridViewItem);
                }
                else if (frameNumber == StackFrameStatementManager.SelectedFrame)
                {
                    item.Image = ImageService.GetImage("SelectedReturnLine", BackgroundType.GridViewItem);
                }
                frameNumber++;
                var module = frame.MethodInfo.DebugModule;
                if (module.IsDynamic || module.IsInMemory)
                {
                    //TODO: support this
                }
                else
                {
                    var loadedMod = MainWindow.Instance.LoadAssembly(module.AssemblyFullPath, module.FullPath).ModuleDefinition as ModuleDef;
                    if (loadedMod != null)
                    {
                        item.ModuleName = loadedMod.FullName;
                        var asm = loadedMod.Assembly;
                        if (asm != null)                         // Should never fail
                        {
                            item.AssemblyName = asm.FullName;
                        }
                    }
                }
                item.Frame = frame;
                items.Add(item);
            }
            return(items);
        }
        IList <CallStackItem> CreateItems(Process debuggedProcess)
        {
            List <CallStackItem> items = new List <CallStackItem>();

            foreach (StackFrame frame in debuggedProcess.SelectedThread.GetCallstack(100))
            {
                CallStackItem item;

                // show modules names
                string moduleName = frame.MethodInfo.DebugModule.ToString();

                item = new CallStackItem()
                {
                    Name = GetFullName(frame), ModuleName = moduleName
                };
                item.Frame = frame;
                items.Add(item);
                Utils.DoEvents(debuggedProcess);
            }
            return(items);
        }
Exemplo n.º 4
0
        void GoToStatement(CallStackItem item)
        {
            if (null == item)
                return;
            StackFrameStatementManager.SelectedFrame = item.FrameNumber;

            var debugModule = item.Frame.MethodInfo.DebugModule;
            var module = MainWindow.Instance.LoadAssembly(debugModule.AssemblyFullPath, debugModule.FullPath).ModuleDefinition as ModuleDefMD;
            if (module == null)
                return;

            IMemberRef mr = module.ResolveToken(item.Token) as IMemberRef;
            if (mr == null)
                return;
            if (Keyboard.Modifiers == ModifierKeys.Control || Keyboard.Modifiers == ModifierKeys.Shift)
                MainWindow.Instance.OpenNewEmptyTab();
            var textView = MainWindow.Instance.SafeActiveTextView;
            if (DebugUtils.JumpTo(textView, mr, item.MethodKey, item.ILOffset))
                MainWindow.Instance.SetTextEditorFocus(textView);
        }
Exemplo n.º 5
0
        IList<CallStackItem> CreateItems(Process debuggedProcess)
        {
            List<CallStackItem> items = new List<CallStackItem>();
            int frameNumber = 0;
            foreach (StackFrame frame in debuggedProcess.SelectedThread.GetCallstack(100)) {
                CallStackItem item;

                item = new CallStackItem() {
                    FrameNumber = frameNumber,
                    Name = GetFullName(frame),
                    ModuleName = frame.MethodInfo.DebugModule.ToString(),
                    Token = (uint)frame.MethodInfo.MetadataToken,
                    ILOffset = frame.IP.IsValid ? frame.IP.Offset : -1,
                    ILOffsetString = frame.IP.IsValid ? string.Format("0x{0:X4}", frame.IP.Offset) : "????",
                    MethodKey = frame.MethodInfo.ToMethodKey(),
                };
                if (frameNumber == 0)
                    item.Image = ImageService.GetImage("CurrentLine", BackgroundType.GridViewItem);
                else if (frameNumber == StackFrameStatementManager.SelectedFrame)
                    item.Image = ImageService.GetImage("SelectedReturnLine", BackgroundType.GridViewItem);
                frameNumber++;
                var module = frame.MethodInfo.DebugModule;
                if (module.IsDynamic || module.IsInMemory) {
                    //TODO: support this
                }
                else {
                    var loadedMod = MainWindow.Instance.LoadAssembly(module.AssemblyFullPath, module.FullPath).ModuleDefinition as ModuleDef;
                    if (loadedMod != null) {
                        item.ModuleName = loadedMod.FullName;
                        var asm = loadedMod.Assembly;
                        if (asm != null) // Should never fail
                            item.AssemblyName = asm.FullName;
                    }
                }
                item.Frame = frame;
                items.Add(item);
            }
            return items;
        }
Exemplo n.º 6
0
		IList<CallStackItem> CreateItems(Process debuggedProcess)
		{
		    List<CallStackItem> items = new List<CallStackItem>();
			foreach (StackFrame frame in debuggedProcess.SelectedThread.GetCallstack(100)) {
				CallStackItem item;
				
				// show modules names
				string moduleName = frame.MethodInfo.DebugModule.ToString();
				
    			item = new CallStackItem() {
					Name = GetFullName(frame), ModuleName = moduleName
				};
				item.Frame = frame;
				items.Add(item);
				Utils.DoEvents(debuggedProcess);
			}
		    return items;
		}