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)); }
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)); }
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; } }