public static void Detach(Debugger.Process process)
		{
			var classBrowser = SD.GetService<IClassBrowser>();
			var nodes = classBrowser.AssemblyLists
				.OfType<DebuggerProcessAssemblyList>()
				.Where(n => n.Process == process)
				.ToArray();
			foreach (var node in nodes) {
				classBrowser.AssemblyLists.Remove(node);
			}
		}
		public DebuggerProcessAssemblyList(Debugger.Process process)
		{
			if (process == null)
				throw new ArgumentNullException("process");
			this.process = process;
			this.moduleModels = new NullSafeSimpleModelCollection<DebuggerModuleModel>();
			this.moduleModels.AddRange(this.process.Modules.Select(m => new DebuggerModuleModel(m)));
			this.Assemblies = new NullSafeSimpleModelCollection<IAssemblyModel>();
			this.Assemblies.AddRange(moduleModels.Select(mm => mm.AssemblyModel));
			this.process.ModuleLoaded += ModuleLoaded;
			this.process.ModuleUnloaded += ModuleUnloaded;
		}
		public static void Show(Process process, string title, string message, string stacktrace, Bitmap icon, bool isUnhandled, Debugger.Exception exception)
		{
			DebuggeeExceptionForm form = new DebuggeeExceptionForm(process);
			form.Text = title;
			form.pictureBox.Image = icon;
			form.lblExceptionText.Text = message;
			form.exceptionView.Text = stacktrace;
			form.isUnhandled = isUnhandled;
			form.btnContinue.Enabled = !isUnhandled;
			form.Exception = exception;
			
			form.Show(WorkbenchSingleton.MainWin32Window);
		}
		public static void Attach(Debugger.Process process)
		{
			var classBrowser = SD.GetService<IClassBrowser>();
			classBrowser.AssemblyLists.Add(new DebuggerProcessAssemblyList(process));
		}
Exemple #5
0
 private void SelectProcess(Debugger.Process process)
 {
     if (debuggedProcess != null)
     {
         //debuggedProcess.DebuggingPaused -= debuggedProcess_DebuggingPaused;
         //debuggedProcess.ExceptionThrown -= debuggedProcess_ExceptionThrown;
         debuggedProcess.DebuggeeStateChanged -= debuggedProcess_DebuggeeStateChanged;
         debuggedProcess.DebuggingResumed -= debuggedProcess_DebuggingResumed;
         debuggedProcess.DebuggingPaused -= debuggedProcess_DebuggingPaused;
         debuggedProcess.ExceptionThrown -= debuggedProcess_ExceptionThrown;
         debuggedProcess.Expired -= debuggedProcess_Expired;
         //debuggedProcess.LogMessage -= debuggedProcess_logMessage;
     }
     debuggedProcess = process;
     if (debuggedProcess != null)
     {
         //debuggedProcess.DebuggingPaused += debuggedProcess_DebuggingPaused;
         //debuggedProcess.ExceptionThrown += debuggedProcess_ExceptionThrown;
         debuggedProcess.DebuggeeStateChanged += debuggedProcess_DebuggeeStateChanged;
         debuggedProcess.DebuggingResumed += debuggedProcess_DebuggingResumed;
         debuggedProcess.DebuggingPaused += debuggedProcess_DebuggingPaused;
         debuggedProcess.ExceptionThrown += debuggedProcess_ExceptionThrown;
         debuggedProcess.Expired += debuggedProcess_Expired;
         //debuggedProcess.LogMessage += debuggedProcess_logMessage;
     }
     JumpToCurrentLine();
     OnProcessSelected(new ProcessEventArgs(process));
 }
Exemple #6
0
		public void UpdateSymbolsFromStream(Debugger.Wrappers.CorDebug.IStream pSymbolStream)
		{
			if (symReader != null) {
				symReader.As<ISymUnmanagedDispose>().Destroy();
			}
			
			symReader = metaData.GetSymReader(pSymbolStream);
			if (symReader != null) {
				OnSymbolsLoaded(new ModuleEventArgs(this));
			}
		}
 public ExpressionEvaluator(Debugger.Process debuggedProcess, IVisualEnvironmentCompiler vec, string FileName)
 {
     this.debuggedProcess = debuggedProcess;
     this.vec = vec;
     this.FileName = FileName;
 }
        public void OnBroadcast(string name, object value)
        {
            switch (name)
            {
                case "debugger started":
                    m_debugger = (Debugger) value;
                    DoRefreshThreads();
                    m_table.reloadData();
                    break;

                case "debugger stopped":
                    m_debugger = null;
                    m_threads.Clear();
                    m_table.reloadData();
                    break;

                case "debugger processed breakpoint event":
                case "debugger thrown exception":
                case "debugger break all":
                case "debugger processed step event":
                    var context = (Context) value;
                    DoRefreshThreads();						// need to refresh this each time because thread states may have changed
                    m_selected = m_threads.IndexOf(context.Thread);
                    m_table.reloadData();
                    break;

                case "debugger state changed":
                    var state = (State) value;
                    if (state != m_state)
                    {
                        m_state = state;
                        if (state != State.Paused && state != State.Running && m_threads.Count > 0)
                        {
                            m_threads.Clear();
                            m_table.reloadData();
                        }
                    }
                    break;

                case "debugger thread started":
                    DoRefreshThreads();
                    m_table.reloadData();
                    break;

                case "debugger thread died":
                    var thread = (ThreadMirror) value;
                    m_names.Remove(thread.Id);
                    DoRefreshThreads();
                    m_table.reloadData();
                    break;

                default:
                    Contract.Assert(false, "bad name: " + name);
                    break;
            }
        }
        public void OnBroadcast(string name, object value)
        {
            switch (name)
            {
                case "debugger started":
                    m_debugger = (Debugger) value;
                    break;

                case "debugger processed breakpoint event":
                case "debugger thrown exception":
                case "debugger break all":
                case "debugger processed step event":
                    var context = (Context) value;
                    var frame = new LiveStackFrame(context.Thread, 0);
                    DoReset(frame);
                    break;

                case "changed thread":
                    var stack = (LiveStack) value;
                    DoReset(stack[0]);
                    break;

                case "changed stack frame":
                    var frame2 = (LiveStackFrame) value;
                    DoReset(frame2);
                    break;

                case "debugger stopped":
                    m_debugger = null;
                    DoReset(null);
                    break;

                case "exiting event loop":
                    DoReset(null);
                    DoSavePrefs();
                    break;

                default:
                    Contract.Assert(false, "bad name: " + name);
                    break;
            }
        }