From 78d62ad59562be3eac8e029b83cebb739d1e7498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Srbeck=C3=BD?= Date: Mon, 11 Jul 2005 17:02:29 +0000 Subject: [PATCH] Debugger made less static git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@173 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Pads/BreakPointsPad.cs | 14 +- .../Project/Src/Pads/CallStackPad.cs | 11 +- .../Project/Src/Pads/ExceptionHistoryPad.cs | 13 +- .../Project/Src/Pads/LoadedModulesPad.cs | 8 +- .../Project/Src/Pads/LocalVarPad.cs | 12 +- .../Project/Src/Pads/RunningThreadsPad.cs | 17 ++- .../Project/Src/Service/WindowsDebugger.cs | 131 ++++++------------ .../Src/Breakpoints/NDebugger-Breakpoints.cs | 8 +- .../Src/Debugger/Internal/ManagedCallback.cs | 75 +++++----- .../Project/Src/Debugger/NDebugger.cs | 126 ++++++++++------- .../Project/Src/Threads/Function.cs | 6 +- .../Project/Src/Threads/Process.cs | 20 +-- .../Project/Src/Threads/Thread.cs | 14 +- .../Project/Src/Variables/Evals/Eval.cs | 10 +- .../Project/Src/Variables/Evals/EvalQueue.cs | 2 +- 15 files changed, 224 insertions(+), 243 deletions(-) diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs index 034e3aecbd..abb1c8f28d 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs @@ -22,6 +22,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads { public class BreakPointsPad : AbstractPadContent { + WindowsDebugger debugger; + ListView breakpointsList; ColumnHeader name = new ColumnHeader(); @@ -40,6 +42,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads void InitializeComponents() { + debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + breakpointsList = new ListView(); breakpointsList.FullRowSelect = true; breakpointsList.AutoArrange = true; @@ -55,11 +59,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads name.Width = 300; path.Width = 400; - NDebugger.DebuggingResumed += new DebuggerEventHandler(debuggerService_OnDebuggingResumed); - NDebugger.Instance.BreakpointAdded += new DebuggerLibrary.BreakpointEventHandler(AddBreakpoint); - NDebugger.Instance.BreakpointStateChanged += new DebuggerLibrary.BreakpointEventHandler(RefreshBreakpoint); - NDebugger.Instance.BreakpointRemoved += new DebuggerLibrary.BreakpointEventHandler(RemoveBreakpoint); - NDebugger.Instance.BreakpointHit += new DebuggerLibrary.BreakpointEventHandler(Breakpoints_OnBreakpointHit); + debugger.DebuggingResumed += new DebuggerEventHandler(debuggerService_OnDebuggingResumed); + debugger.BreakpointAdded += new DebuggerLibrary.BreakpointEventHandler(AddBreakpoint); + debugger.BreakpointStateChanged += new DebuggerLibrary.BreakpointEventHandler(RefreshBreakpoint); + debugger.BreakpointRemoved += new DebuggerLibrary.BreakpointEventHandler(RemoveBreakpoint); + debugger.BreakpointHit += new DebuggerLibrary.BreakpointEventHandler(Breakpoints_OnBreakpointHit); RedrawContent(); } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs index 8340ad60b6..7f3befb520 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs @@ -22,12 +22,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads { public class CallStackPad : AbstractPadContent { + WindowsDebugger debugger; + ListView callStackList; - // - //WindowsDebugger DebuggerService = (WindowsDebugger)((DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService))).CurrentDebugger; - WindowsDebugger debugger; - ColumnHeader name = new ColumnHeader(); ColumnHeader language = new ColumnHeader(); @@ -45,6 +43,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads void InitializeComponents() { debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + callStackList = new ListView(); callStackList.FullRowSelect = true; callStackList.AutoArrange = true; @@ -58,8 +57,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads name.Width = 300; language.Width = 400; - NDebugger.IsDebuggingChanged += new DebuggerEventHandler(DebuggerStateChanged); - NDebugger.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); + debugger.IsDebuggingChanged += new DebuggerEventHandler(DebuggerStateChanged); + debugger.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); RedrawContent(); } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs index 2306a3397a..238114535c 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs @@ -22,12 +22,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads { public class ExceptionHistoryPad : AbstractPadContent { + WindowsDebugger debugger; + ListView exceptionHistoryList; - // - //WindowsDebugger DebuggerService = (WindowsDebugger)((DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService))).CurrentDebugger; - WindowsDebugger debugger; - ColumnHeader time = new ColumnHeader(); ColumnHeader exception = new ColumnHeader(); ColumnHeader location = new ColumnHeader(); @@ -45,7 +43,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads void InitializeComponents() { - debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + exceptionHistoryList = new ListView(); exceptionHistoryList.FullRowSelect = true; exceptionHistoryList.AutoArrange = true; @@ -60,8 +59,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads location.Width = 400; time.Width = 80; - NDebugger.IsDebuggingChanged += new DebuggerEventHandler(DebuggerStateChanged); - NDebugger.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); + debugger.IsDebuggingChanged += new DebuggerEventHandler(DebuggerStateChanged); + debugger.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); RedrawContent(); } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs index 6dd78b87a6..eb6e1b84df 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs @@ -21,6 +21,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads { public class LoadedModulesPad : AbstractPadContent { + WindowsDebugger debugger; + ListView loadedModulesList; ColumnHeader name = new ColumnHeader(); @@ -46,6 +48,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads void InitializeComponents() { + debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + loadedModulesList = new ListView(); loadedModulesList.FullRowSelect = true; loadedModulesList.AutoArrange = true; @@ -64,8 +68,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads timestamp.Width = 0;//80; information.Width = 130; - NDebugger.Instance.ModuleLoaded += new DebuggerLibrary.ModuleEventHandler(AddModule); - NDebugger.Instance.ModuleUnloaded += new DebuggerLibrary.ModuleEventHandler(RemoveModule); + debugger.ModuleLoaded += new DebuggerLibrary.ModuleEventHandler(AddModule); + debugger.ModuleUnloaded += new DebuggerLibrary.ModuleEventHandler(RemoveModule); RedrawContent(); } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs index 4dd4b13e00..5ea5ed44d6 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs @@ -22,9 +22,9 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads { public class LocalVarPad : AbstractPadContent { - TreeListView localVarList; + WindowsDebugger debugger; - //ClassBrowserIconsService iconsService; + TreeListView localVarList; ColumnHeader name = new ColumnHeader(); ColumnHeader val = new ColumnHeader(); @@ -43,6 +43,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads void InitializeComponents() { + debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + ImageList imageList = new ImageList(); imageList.Images.Add(IconService.GetBitmap("Icons.16x16.Class")); imageList.Images.Add(IconService.GetBitmap("Icons.16x16.Field")); @@ -63,7 +65,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads localVarList.BeforeExpand += new TreeListViewCancelEventHandler(localVarList_BeforeExpand); - NDebugger.DebuggingPaused += new DebuggingPausedEventHandler(debuggerService_OnDebuggingPaused); + debugger.DebuggingPaused += new DebuggingPausedEventHandler(debuggerService_OnDebuggingPaused); RedrawContent(); } @@ -74,7 +76,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads val.Text = "Value"; type.Text = "Type"; - if (NDebugger.IsDebugging && NDebugger.IsProcessRunning == false) { + if (debugger.IsDebugging && debugger.IsProcessRunning == false) { debuggerService_OnDebuggingPaused(this, new DebuggingPausedEventArgs(PausedReason.StepComplete)); } } @@ -84,7 +86,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads localVarList.BeginUpdate(); localVarList.Items.Clear(); - AddVariables(localVarList.Items, NDebugger.LocalVariables); + AddVariables(localVarList.Items, debugger.LocalVariables); localVarList.EndUpdate(); } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs index 61379a4851..98d1d90842 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs @@ -22,12 +22,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads { public class RunningThreadsPad : AbstractPadContent { + WindowsDebugger debugger; + ListView runningThreadsList; - // - //WindowsDebugger DebuggerService = (WindowsDebugger)((DebuggerService)ServiceManager.Services.GetService(typeof(DebuggerService))).CurrentDebugger; - WindowsDebugger debugger; - ColumnHeader id = new ColumnHeader(); ColumnHeader name = new ColumnHeader(); ColumnHeader location = new ColumnHeader(); @@ -47,7 +45,8 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads void InitializeComponents() { - debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; + runningThreadsList = new ListView(); runningThreadsList.FullRowSelect = true; runningThreadsList.AutoArrange = true; @@ -65,10 +64,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads breaked.Width = 80; - NDebugger.Instance.ThreadStarted += new ThreadEventHandler(AddThread); - NDebugger.Instance.ThreadStateChanged += new ThreadEventHandler(RefreshThread); - NDebugger.Instance.ThreadExited += new ThreadEventHandler(RemoveThread); - NDebugger.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); + debugger.ThreadStarted += new ThreadEventHandler(AddThread); + debugger.ThreadStateChanged += new ThreadEventHandler(RefreshThread); + debugger.ThreadExited += new ThreadEventHandler(RemoveThread); + debugger.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); RedrawContent(); } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs index 900372a65e..db642d356e 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs @@ -34,7 +34,7 @@ using ICSharpCode.SharpDevelop.Services; namespace ICSharpCode.SharpDevelop.Services { - public class WindowsDebugger:IDebugger //, IService + public class WindowsDebugger:NDebugger, IDebugger //, IService { public event EventHandler DebugStopped; // FIX: unused @@ -88,15 +88,6 @@ namespace ICSharpCode.SharpDevelop.Services public void InitializeService() { - NDebugger.DebuggerTraceMessage += new MessageEventHandler(DebuggerTraceMessage); - NDebugger.LogMessage += new MessageEventHandler(LogMessage); - NDebugger.DebuggingStarted += new DebuggerEventHandler(DebuggingStarted); - NDebugger.DebuggingPaused += new DebuggingPausedEventHandler(DebuggingPaused); - NDebugger.DebuggingResumed += new DebuggerEventHandler(DebuggingResumed); - NDebugger.DebuggingStopped += new DebuggerEventHandler(DebuggingStopped); - NDebugger.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); - NDebugger.Instance.BreakpointStateChanged += new DebuggerLibrary.BreakpointEventHandler(RestoreSharpdevelopBreakpoint); - DebuggerService.BreakPointAdded += new EventHandler(RestoreNDebuggerBreakpoints); DebuggerService.BreakPointRemoved += new EventHandler(RestoreNDebuggerBreakpoints); DebuggerService.BreakPointChanged += new EventHandler(RestoreNDebuggerBreakpoints); @@ -108,13 +99,6 @@ namespace ICSharpCode.SharpDevelop.Services public void UnloadService() { - NDebugger.DebuggerTraceMessage -= new MessageEventHandler(DebuggerTraceMessage); - NDebugger.LogMessage -= new MessageEventHandler(LogMessage); - NDebugger.DebuggingStarted -= new DebuggerEventHandler(DebuggingStarted); - NDebugger.DebuggingPaused -= new DebuggingPausedEventHandler(DebuggingPaused); - NDebugger.IsProcessRunningChanged -= new DebuggerEventHandler(DebuggerStateChanged); - NDebugger.Instance.BreakpointStateChanged -= new DebuggerLibrary.BreakpointEventHandler(RestoreSharpdevelopBreakpoint); - DebuggerService.BreakPointAdded -= new EventHandler(RestoreNDebuggerBreakpoints); DebuggerService.BreakPointRemoved -= new EventHandler(RestoreNDebuggerBreakpoints); DebuggerService.BreakPointChanged -= new EventHandler(RestoreNDebuggerBreakpoints); @@ -126,17 +110,6 @@ namespace ICSharpCode.SharpDevelop.Services #endregion #region ICSharpCode.SharpDevelop.Services.IDebugger interface implementation - public bool IsDebugging { - get { - return NDebugger.IsDebugging; - } - } - - public bool IsProcessRunning { - get { - return NDebugger.IsProcessRunning; - } - } public bool SupportsStartStop { get { @@ -150,45 +123,11 @@ namespace ICSharpCode.SharpDevelop.Services } } - public void StartWithoutDebugging(System.Diagnostics.ProcessStartInfo psi) - { - NDebugger.StartWithoutDebugging(psi); - } - - public void Start(string fileName, string workingDirectory, string arguments) - { - NDebugger.Start(fileName, workingDirectory, arguments); - } - public void Stop() { - NDebugger.Terminate(); - } - - public void Break() - { - NDebugger.Break(); - } - - public void StepInto() - { - NDebugger.StepInto(); - } - - public void StepOver() - { - NDebugger.StepOver(); - } - - public void StepOut() - { - NDebugger.StepOut(); - } - - public void Continue() - { - NDebugger.Continue(); + this.Terminate(); } + #endregion @@ -204,36 +143,44 @@ namespace ICSharpCode.SharpDevelop.Services } } - public void RestoreSharpdevelopBreakpoint(object sender, BreakpointEventArgs e) + protected override void OnBreakpointStateChanged(object sender, BreakpointEventArgs e) { - ICSharpCode.Core.Breakpoint sdBreakpoint = e.Breakpoint.Tag as ICSharpCode.Core.Breakpoint; + RestoreSharpdevelopBreakpoint(e.Breakpoint); + } + + public void RestoreSharpdevelopBreakpoint(DebuggerLibrary.Breakpoint breakpoint) + { + ICSharpCode.Core.Breakpoint sdBreakpoint = breakpoint.Tag as ICSharpCode.Core.Breakpoint; if (sdBreakpoint != null) { - sdBreakpoint.IsEnabled = e.Breakpoint.Enabled; - sdBreakpoint.FileName = e.Breakpoint.SourcecodeSegment.SourceFullFilename; - sdBreakpoint.LineNumber = e.Breakpoint.SourcecodeSegment.StartLine; + sdBreakpoint.IsEnabled = breakpoint.Enabled; + sdBreakpoint.FileName = breakpoint.SourcecodeSegment.SourceFullFilename; + sdBreakpoint.LineNumber = breakpoint.SourcecodeSegment.StartLine; } } // Output messages that report status of debugger - void DebuggerTraceMessage(object sender, MessageEventArgs e) + protected override void OnDebuggerTraceMessage(string message) { + base.OnDebuggerTraceMessage(message); if (messageViewCategoryDebuggerLog != null) { - messageViewCategoryDebuggerLog.AppendText(e.Message + "\n"); - System.Console.WriteLine(e.Message); + messageViewCategoryDebuggerLog.AppendText(message + "\n"); + System.Console.WriteLine(message); } } - + // Output messages form debuged program that are caused by System.Diagnostics.Trace.WriteLine(), etc... - void LogMessage(object sender, MessageEventArgs e) + protected override void OnLogMessage(string message) { - DebuggerTraceMessage(this, e); + base.OnLogMessage(message); + OnDebuggerTraceMessage(message); if (messageViewCategoryDebug != null) { - messageViewCategoryDebug.AppendText(e.Message + "\n"); + messageViewCategoryDebug.AppendText(message + "\n"); } } - void DebuggingStarted(object sender, DebuggerEventArgs e) + protected override void OnDebuggingStarted() { + base.OnDebuggingStarted(); // Initialize /*PadDescriptor cmv = (CompilerMessageView)WorkbenchSingleton.Workbench.GetPad(typeof(CompilerMessageView)); if (messageViewCategoryDebug == null) { @@ -247,11 +194,12 @@ namespace ICSharpCode.SharpDevelop.Services messageViewCategoryDebuggerLog.ClearText();*/ } - void DebuggingPaused(object sender, DebuggingPausedEventArgs e) + protected override void OnDebuggingPaused(PausedReason reason) { - if (e.Reason == PausedReason.Exception) { - exceptionHistory.Add(NDebugger.CurrentThread.CurrentException); - if (NDebugger.CurrentThread.CurrentException.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED && (NDebugger.CatchHandledExceptions == false)) { + base.OnDebuggingPaused(reason); + if (reason == PausedReason.Exception) { + exceptionHistory.Add(CurrentThread.CurrentException); + if (CurrentThread.CurrentException.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED && (CatchHandledExceptions == false)) { // Ignore the exception Continue(); return; @@ -261,10 +209,10 @@ namespace ICSharpCode.SharpDevelop.Services //MessageBox.Show("Exception was thrown in debugee:\n" + NDebugger.CurrentThread.CurrentException.ToString()); ExceptionForm form = new ExceptionForm(); form.label.Text = "Exception " + - NDebugger.CurrentThread.CurrentException.Type + + CurrentThread.CurrentException.Type + " was thrown in debugee:\n" + - NDebugger.CurrentThread.CurrentException.Message; - form.pictureBox.Image = ResourceService.GetBitmap((NDebugger.CurrentThread.CurrentException.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED)?"Icons.32x32.Warning":"Icons.32x32.Error"); + CurrentThread.CurrentException.Message; + form.pictureBox.Image = ResourceService.GetBitmap((CurrentThread.CurrentException.ExceptionType != ExceptionType.DEBUG_EXCEPTION_UNHANDLED)?"Icons.32x32.Warning":"Icons.32x32.Error"); form.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm); switch (form.result) { case ExceptionForm.Result.Break: @@ -280,20 +228,22 @@ namespace ICSharpCode.SharpDevelop.Services } try { - SelectThread(NDebugger.CurrentThread); + SelectThread(CurrentThread); } catch (CurrentThreadNotAviableException) {} JumpToCurrentLine(); } - void DebuggingResumed(object sender, DebuggerEventArgs e) + protected override void OnDebuggingResumed() { + base.OnDebuggingResumed(); selectedThread = null; selectedFunction = null; DebuggerService.RemoveCurrentLineMarker(); } - void DebuggingStopped(object sender, DebuggerEventArgs e) + protected override void OnDebuggingStopped() { + base.OnDebuggingStopped(); exceptionHistory.Clear(); //DebuggerService.Stop();//TODO: delete } @@ -337,8 +287,9 @@ namespace ICSharpCode.SharpDevelop.Services } } - public void DebuggerStateChanged(object sender, DebuggerEventArgs e) + protected override void OnIsProcessRunningChanged() { + base.OnIsProcessRunningChanged(); UpdateToolbars(); } @@ -355,8 +306,8 @@ namespace ICSharpCode.SharpDevelop.Services /// public string GetValueAsString(string variableName) { - if (!NDebugger.IsDebugging || NDebugger.IsProcessRunning) return null; - VariableCollection collection = NDebugger.LocalVariables; + if (!IsDebugging || IsProcessRunning) return null; + VariableCollection collection = LocalVariables; if (collection == null) return null; foreach (Variable v in collection) { diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Breakpoints/NDebugger-Breakpoints.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Breakpoints/NDebugger-Breakpoints.cs index 7d4b2ce570..3fb77381ab 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Breakpoints/NDebugger-Breakpoints.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Breakpoints/NDebugger-Breakpoints.cs @@ -20,28 +20,28 @@ namespace DebuggerLibrary public event BreakpointEventHandler BreakpointStateChanged; public event BreakpointEventHandler BreakpointHit; - protected void OnBreakpointAdded(Breakpoint breakpoint) + protected virtual void OnBreakpointAdded(Breakpoint breakpoint) { if (BreakpointAdded != null) { BreakpointAdded(this, new BreakpointEventArgs(breakpoint)); } } - protected void OnBreakpointRemoved(Breakpoint breakpoint) + protected virtual void OnBreakpointRemoved(Breakpoint breakpoint) { if (BreakpointRemoved != null) { BreakpointRemoved(this, new BreakpointEventArgs(breakpoint)); } } - protected void OnBreakpointStateChanged(object sender, BreakpointEventArgs e) + protected virtual void OnBreakpointStateChanged(object sender, BreakpointEventArgs e) { if (BreakpointStateChanged != null) { BreakpointStateChanged(this, new BreakpointEventArgs(e.Breakpoint)); } } - protected void OnBreakpointHit(object sender, BreakpointEventArgs e) + protected virtual void OnBreakpointHit(object sender, BreakpointEventArgs e) { if (BreakpointHit != null) { BreakpointHit(this, new BreakpointEventArgs(e.Breakpoint)); diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs index 3854fe325b..493782db43 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/Internal/ManagedCallback.cs @@ -17,7 +17,8 @@ using DebuggerInterop.Core; namespace DebuggerLibrary { class ManagedCallback - { + { + NDebugger debugger = NDebugger.Instance; bool handlingCallback = false; public event CorDebugEvalEventHandler CorDebugEvalCompleted; @@ -31,28 +32,28 @@ namespace DebuggerLibrary void EnterCallback(string name) { handlingCallback = true; - NDebugger.IsProcessRunning = false; - NDebugger.CurrentThread = null; - NDebugger.TraceMessage("Callback: " + name); + debugger.IsProcessRunning = false; + debugger.CurrentThread = null; + debugger.TraceMessage("Callback: " + name); } void ExitCallback_Continue(ICorDebugAppDomain pAppDomain) { - NDebugger.Continue(pAppDomain); + debugger.Continue(pAppDomain); handlingCallback = false; } void ExitCallback_Continue() { - NDebugger.Continue(); + debugger.Continue(); handlingCallback = false; } void ExitCallback_Paused(PausedReason reason) { if (reason != PausedReason.EvalComplete) { - NDebugger.OnDebuggingPaused(reason); - NDebugger.OnIsProcessRunningChanged(); + debugger.OnDebuggingPaused(reason); + debugger.OnIsProcessRunningChanged(); } handlingCallback = false; } @@ -64,11 +65,11 @@ namespace DebuggerLibrary { EnterCallback("StepComplete"); - NDebugger.CurrentThread = NDebugger.Instance.GetThread(pThread); + debugger.CurrentThread = debugger.GetThread(pThread); - if (NDebugger.CurrentThread.CurrentFunction.Module.SymbolsLoaded == false) { - NDebugger.TraceMessage(" - stepping out of code without symbols"); - NDebugger.StepOut(); + if (debugger.CurrentThread.CurrentFunction.Module.SymbolsLoaded == false) { + debugger.TraceMessage(" - stepping out of code without symbols"); + debugger.StepOut(); return; } @@ -78,12 +79,12 @@ namespace DebuggerLibrary public void Breakpoint(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, IntPtr pBreakpoint) { EnterCallback("Breakpoint"); - - NDebugger.CurrentThread = NDebugger.Instance.GetThread(pThread); + + debugger.CurrentThread = debugger.GetThread(pThread); ExitCallback_Paused(PausedReason.Breakpoint); - foreach (Breakpoint b in NDebugger.Instance.Breakpoints) { + foreach (Breakpoint b in debugger.Breakpoints) { if (b.Equals(pBreakpoint)) { b.OnBreakpointHit(); } @@ -101,7 +102,7 @@ namespace DebuggerLibrary { EnterCallback("Break"); - NDebugger.CurrentThread = NDebugger.Instance.GetThread(pThread); + debugger.CurrentThread = debugger.GetThread(pThread); ExitCallback_Paused(PausedReason.Break); } @@ -149,8 +150,8 @@ namespace DebuggerLibrary public void LogMessage(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread, int lLevel, string pLogSwitchName, string pMessage) { EnterCallback("LogMessage"); - - NDebugger.OnLogMessage(pMessage); + + debugger.OnLogMessage(pMessage); ExitCallback_Continue(pAppDomain); } @@ -220,7 +221,7 @@ namespace DebuggerLibrary { EnterCallback("LoadModule"); - NDebugger.Instance.AddModule(pModule); + debugger.AddModule(pModule); ExitCallback_Continue(pAppDomain); } @@ -236,7 +237,7 @@ namespace DebuggerLibrary if (pThread != null) { EnterCallback("NameChange: pThread"); - Thread thread = NDebugger.Instance.GetThread(pThread); + Thread thread = debugger.GetThread(pThread); thread.HasBeenLoaded = true; thread.OnThreadStateChanged(); ExitCallback_Continue(); @@ -247,11 +248,11 @@ namespace DebuggerLibrary public void CreateThread(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread) { EnterCallback("CreateThread"); - - NDebugger.Instance.AddThread(pThread); - if (NDebugger.MainThread == null) { - NDebugger.MainThread = NDebugger.Instance.GetThread(pThread); + debugger.AddThread(pThread); + + if (debugger.MainThread == null) { + debugger.MainThread = debugger.GetThread(pThread); } ExitCallback_Continue(pAppDomain); @@ -279,7 +280,7 @@ namespace DebuggerLibrary { EnterCallback("UnloadModule"); - NDebugger.Instance.RemoveModule(pModule); + debugger.RemoveModule(pModule); ExitCallback_Continue(pAppDomain); } @@ -294,16 +295,16 @@ namespace DebuggerLibrary public void ExitThread(ICorDebugAppDomain pAppDomain, ICorDebugThread pThread) { EnterCallback("ExitThread"); - - Thread thread = NDebugger.Instance.GetThread(pThread); - if (NDebugger.CurrentThread == thread) - NDebugger.CurrentThread = null; - - if (NDebugger.MainThread == thread) - NDebugger.MainThread = null; - - NDebugger.Instance.RemoveThread(thread); + Thread thread = debugger.GetThread(pThread); + + if (debugger.CurrentThread == thread) + debugger.CurrentThread = null; + + if (debugger.MainThread == thread) + debugger.MainThread = null; + + debugger.RemoveThread(thread); ExitCallback_Continue(pAppDomain); } @@ -319,7 +320,7 @@ namespace DebuggerLibrary { EnterCallback("ExitProcess"); - NDebugger.Instance.ResetEnvironment(); + debugger.ResetEnvironment(); } @@ -357,8 +358,8 @@ namespace DebuggerLibrary // return; //} - NDebugger.CurrentThread = NDebugger.Instance.GetThread(pThread); - NDebugger.CurrentThread.CurrentExceptionType = (ExceptionType)dwEventType; + debugger.CurrentThread = debugger.GetThread(pThread); + debugger.CurrentThread.CurrentExceptionType = (ExceptionType)dwEventType; ExitCallback_Paused(PausedReason.Exception); } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs index 62ee1455ff..fd58d515c2 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Debugger/NDebugger.cs @@ -15,10 +15,13 @@ namespace DebuggerLibrary { public partial class NDebugger { - static NDebugger instance = new NDebugger(); + static NDebugger instance = null; public static NDebugger Instance { get { + if (instance == null) { + throw new System.Exception("Create instance of NDebugger first"); + } return instance; } set { @@ -26,21 +29,21 @@ namespace DebuggerLibrary } } - static ICorDebug corDebug; - static ManagedCallback managedCallback; - static ManagedCallbackProxy managedCallbackProxy; + ICorDebug corDebug; + ManagedCallback managedCallback; + ManagedCallbackProxy managedCallbackProxy; - static Process mainProcess; + Process mainProcess; - public static bool CatchHandledExceptions = false; + public bool CatchHandledExceptions = false; - static internal ICorDebug CorDebug { + internal ICorDebug CorDebug { get { return corDebug; } } - static internal Process CurrentProcess { + internal Process CurrentProcess { get { return mainProcess; } @@ -61,7 +64,7 @@ namespace DebuggerLibrary } } - internal static ManagedCallback ManagedCallback { + internal ManagedCallback ManagedCallback { get { return managedCallback; } @@ -69,8 +72,14 @@ namespace DebuggerLibrary #region Basic functions - private NDebugger() + public NDebugger() { + if (instance != null) { + throw new System.Exception("You can create only one instance of NDebugger at the moment."); + } else { + instance = this; + } + InitDebugger(); ResetEnvironment(); @@ -82,7 +91,7 @@ namespace DebuggerLibrary //corDebug.Terminate(); } - static internal void InitDebugger() + internal void InitDebugger() { int size; NativeMethods.GetCORVersion(null, 0, out size); @@ -118,29 +127,31 @@ namespace DebuggerLibrary #region Public events - static public event DebuggerEventHandler DebuggingStarted; + public event DebuggerEventHandler DebuggingStarted; - static internal void OnDebuggingStarted() + protected internal virtual void OnDebuggingStarted() { TraceMessage ("Debugger event: OnDebuggingStarted()"); - if (DebuggingStarted != null) + if (DebuggingStarted != null) { DebuggingStarted(null, new DebuggerEventArgs()); + } } - static public event DebuggingPausedEventHandler DebuggingPaused; + public event DebuggingPausedEventHandler DebuggingPaused; - static internal void OnDebuggingPaused(PausedReason reason) + protected internal virtual void OnDebuggingPaused(PausedReason reason) { TraceMessage ("Debugger event: OnDebuggingPaused(" + reason.ToString() + ")"); - if (DebuggingPaused != null) + if (DebuggingPaused != null) { DebuggingPaused(null, new DebuggingPausedEventArgs(reason)); + } } - static public event DebuggingIsResumingEventHandler DebuggingIsResuming; + public event DebuggingIsResumingEventHandler DebuggingIsResuming; - static internal void OnDebuggingIsResuming(ref bool abort) + protected internal virtual void OnDebuggingIsResuming(ref bool abort) { if (DebuggingIsResuming != null) { TraceMessage ("Debugger event: OnDebuggingIsResuming(" + abort.ToString() + ")"); @@ -156,66 +167,77 @@ namespace DebuggerLibrary } - static public event DebuggerEventHandler DebuggingResumed; + public event DebuggerEventHandler DebuggingResumed; - static internal void OnDebuggingResumed() + protected internal virtual void OnDebuggingResumed() { TraceMessage ("Debugger event: OnDebuggingResumed()"); - if (DebuggingResumed != null) + if (DebuggingResumed != null) { DebuggingResumed(null, new DebuggerEventArgs()); + } } - static public event DebuggerEventHandler DebuggingStopped; + public event DebuggerEventHandler DebuggingStopped; - static internal void OnDebuggingStopped() + protected internal virtual void OnDebuggingStopped() { TraceMessage ("Debugger event: OnDebuggingStopped()"); - if (DebuggingStopped != null) + if (DebuggingStopped != null) { DebuggingStopped(null, new DebuggerEventArgs()); + } } - static public event DebuggerEventHandler IsProcessRunningChanged; + public event DebuggerEventHandler IsProcessRunningChanged; - static internal void OnIsProcessRunningChanged() + protected internal virtual void OnIsProcessRunningChanged() { TraceMessage ("Debugger event: OnIsProcessRunningChanged()"); - if (IsProcessRunningChanged != null) + if (IsProcessRunningChanged != null) { IsProcessRunningChanged(null, new DebuggerEventArgs()); + } } - static public event DebuggerEventHandler IsDebuggingChanged; + public event DebuggerEventHandler IsDebuggingChanged; - static internal void OnIsDebuggingChanged() + protected internal virtual void OnIsDebuggingChanged() { TraceMessage ("Debugger event: OnIsDebuggingChanged()"); - if (IsDebuggingChanged != null) + if (IsDebuggingChanged != null) { IsDebuggingChanged(null, new DebuggerEventArgs()); + } } /// /// Fired when System.Diagnostics.Trace.WriteLine() is called in debuged process /// - static public event MessageEventHandler LogMessage; + public event MessageEventHandler LogMessage; - static internal void OnLogMessage(string message) + protected internal virtual void OnLogMessage(string message) { TraceMessage ("Debugger event: OnLogMessage(\"" + message + "\")"); - if (LogMessage != null) + if (LogMessage != null) { LogMessage(null, new MessageEventArgs(message)); + } } /// /// Internal: Used to debug the debugger library. /// - static public event MessageEventHandler DebuggerTraceMessage; + public event MessageEventHandler DebuggerTraceMessage; - static internal void TraceMessage(string message) + protected internal virtual void OnDebuggerTraceMessage(string message) { - if (DebuggerTraceMessage != null) + if (DebuggerTraceMessage != null) { DebuggerTraceMessage(null, new MessageEventArgs(message)); + } + } + + internal void TraceMessage(string message) + { + OnDebuggerTraceMessage(message); } @@ -223,14 +245,14 @@ namespace DebuggerLibrary #region Execution control - static internal void Continue(ICorDebugAppDomain pAppDomain) + internal void Continue(ICorDebugAppDomain pAppDomain) { ICorDebugProcess outProcess; pAppDomain.GetProcess(out outProcess); outProcess.Continue(0); } - static public void StartWithoutDebugging(System.Diagnostics.ProcessStartInfo psi) + public void StartWithoutDebugging(System.Diagnostics.ProcessStartInfo psi) { System.Diagnostics.Process process; process = new System.Diagnostics.Process(); @@ -238,7 +260,7 @@ namespace DebuggerLibrary process.Start(); } - static public void Start(string filename, string workingDirectory, string arguments) + public void Start(string filename, string workingDirectory, string arguments) { CurrentProcess = Process.CreateProcess(filename, workingDirectory, arguments); } @@ -274,7 +296,7 @@ namespace DebuggerLibrary } - static public bool IsProcessRunning { + public bool IsProcessRunning { get { if (!IsDebugging) return false; return CurrentProcess.IsProcessRunning; @@ -285,13 +307,13 @@ namespace DebuggerLibrary } } - static public bool IsDebugging { + public bool IsDebugging { get { return (CurrentProcess != null); } } - static public Thread CurrentThread { + public Thread CurrentThread { get { if (!IsDebugging) return null; return CurrentProcess.CurrentThread; @@ -301,7 +323,7 @@ namespace DebuggerLibrary } } - static public Thread MainThread { + public Thread MainThread { get { if (!IsDebugging) return null; return CurrentProcess.MainThread; @@ -311,46 +333,46 @@ namespace DebuggerLibrary } } - static public SourcecodeSegment NextStatement { + public SourcecodeSegment NextStatement { get { if (!IsDebugging) return null; return CurrentProcess.NextStatement; } } - static public VariableCollection LocalVariables { + public VariableCollection LocalVariables { get { if (!IsDebugging) return null; return CurrentProcess.LocalVariables; } } - static public void Break() + public void Break() { CurrentProcess.Break(); } - static public void StepInto() + public void StepInto() { CurrentProcess.StepInto(); } - static public void StepOver() + public void StepOver() { CurrentProcess.StepOver(); } - static public void StepOut() + public void StepOut() { CurrentProcess.StepOut(); } - static public void Continue() + public void Continue() { CurrentProcess.Continue(); } - static public void Terminate() + public void Terminate() { CurrentProcess.Terminate(); } diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs index 1b1371f08b..414960e051 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Function.cs @@ -144,7 +144,7 @@ namespace DebuggerLibrary corFrame.CreateStepper(out stepper); stepper.StepOut(); - NDebugger.Continue(); + NDebugger.Instance.Continue(); } private unsafe void Step(bool stepIn) @@ -167,9 +167,9 @@ namespace DebuggerLibrary fixed (int* ranges = nextSt.StepRanges) { stepper.StepRange(stepIn?1:0, (IntPtr)ranges, (uint)nextSt.StepRanges.Length / 2); - } + } - NDebugger.Continue(); + NDebugger.Instance.Continue(); } /// diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Process.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Process.cs index b69125cd23..f27dfd1216 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Process.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Process.cs @@ -43,8 +43,8 @@ namespace DebuggerLibrary if (mainThread == null) { mainThread = value; } - if (NDebugger.ManagedCallback.HandlingCallback == false) { - NDebugger.OnDebuggingPaused(PausedReason.CurrentThreadChanged); + if (NDebugger.Instance.ManagedCallback.HandlingCallback == false) { + NDebugger.Instance.OnDebuggingPaused(PausedReason.CurrentThreadChanged); } } } @@ -93,7 +93,7 @@ namespace DebuggerLibrary static public unsafe Process StartInternal(string filename, string workingDirectory, string arguments) { - NDebugger.TraceMessage("Executing " + filename); + NDebugger.Instance.TraceMessage("Executing " + filename); _SECURITY_ATTRIBUTES secAttr = new _SECURITY_ATTRIBUTES(); secAttr.bInheritHandle = 0; @@ -108,7 +108,7 @@ namespace DebuggerLibrary fixed (uint* pprocessStartupInfo = processStartupInfo) fixed (uint* pprocessInfo = processInfo) - NDebugger.CorDebug.CreateProcess( + NDebugger.Instance.CorDebug.CreateProcess( filename, // lpApplicationName arguments, // lpCommandLine ref secAttr, // lpProcessAttributes @@ -136,8 +136,8 @@ namespace DebuggerLibrary corProcess.Stop(5000); // TODO: Hardcoded value isProcessRunning = false; - NDebugger.OnDebuggingPaused(PausedReason.Break); - NDebugger.OnIsProcessRunningChanged(); + NDebugger.Instance.OnDebuggingPaused(PausedReason.Break); + NDebugger.Instance.OnIsProcessRunningChanged(); } public void StepInto() @@ -175,13 +175,13 @@ namespace DebuggerLibrary } bool abort = false; - NDebugger.OnDebuggingIsResuming(ref abort); + NDebugger.Instance.OnDebuggingIsResuming(ref abort); if (abort == true) return; isProcessRunning = true; - if (NDebugger.ManagedCallback.HandlingCallback == false) { - NDebugger.OnDebuggingResumed(); - NDebugger.OnIsProcessRunningChanged(); + if (NDebugger.Instance.ManagedCallback.HandlingCallback == false) { + NDebugger.Instance.OnDebuggingResumed(); + NDebugger.Instance.OnIsProcessRunningChanged(); } corProcess.Continue(0); diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs index ce5f202f73..418fc9cd41 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Threads/Thread.cs @@ -62,7 +62,7 @@ namespace DebuggerLibrary public bool Suspended { get { - if (NDebugger.IsProcessRunning) return lastSuspendedState; + if (NDebugger.Instance.IsProcessRunning) return lastSuspendedState; CorDebugThreadState state; corThread.GetDebugState(out state); @@ -77,7 +77,7 @@ namespace DebuggerLibrary public ThreadPriority Priority { get { if (!HasBeenLoaded) return lastPriority; - if (NDebugger.IsProcessRunning) return lastPriority; + if (NDebugger.Instance.IsProcessRunning) return lastPriority; Variable runTimeVar = RuntimeVariable; if (runTimeVar is NullRefVariable) return ThreadPriority.Normal; @@ -90,7 +90,7 @@ namespace DebuggerLibrary public Variable RuntimeVariable { get { if (!HasBeenLoaded) throw new UnableToGetPropertyException(this, "runtimeVariable", "Thread has not started jet"); - if (NDebugger.IsProcessRunning) throw new UnableToGetPropertyException(this, "runtimeVariable", "Process is running"); + if (NDebugger.Instance.IsProcessRunning) throw new UnableToGetPropertyException(this, "runtimeVariable", "Process is running"); ICorDebugValue corValue; corThread.GetObject(out corValue); return VariableFactory.CreateVariable(corValue, "Thread" + ID); @@ -101,7 +101,7 @@ namespace DebuggerLibrary public string Name { get { if (!HasBeenLoaded) return lastName; - if (NDebugger.IsProcessRunning) return lastName; + if (NDebugger.Instance.IsProcessRunning) return lastName; Variable runtimeVar = RuntimeVariable; if (runtimeVar is NullRefVariable) return lastName; Variable runtimeName = runtimeVar.SubVariables["m_Name"]; @@ -137,8 +137,8 @@ namespace DebuggerLibrary get { List callstack = new List(); - if (!NDebugger.IsDebugging) return callstack; - if (NDebugger.IsProcessRunning) return callstack; + if (!NDebugger.Instance.IsDebugging) return callstack; + if (NDebugger.Instance.IsProcessRunning) return callstack; ICorDebugChainEnum corChainEnum; corThread.EnumerateChains(out corChainEnum); @@ -177,7 +177,7 @@ namespace DebuggerLibrary public Function CurrentFunction { get { - if (NDebugger.IsProcessRunning) throw new CurrentFunctionNotAviableException(); + if (NDebugger.Instance.IsProcessRunning) throw new CurrentFunctionNotAviableException(); ICorDebugFrame corFrame; corThread.GetActiveFrame(out corFrame); if (corFrame == null) { diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs index 6d57e86587..dc8a43d9e0 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/Eval.cs @@ -32,7 +32,7 @@ namespace DebuggerLibrary { this.corFunction = corFunction; this.args = args; - NDebugger.ManagedCallback.CorDebugEvalCompleted += new CorDebugEvalEventHandler(CorDebugEvalCompleted); + NDebugger.Instance.ManagedCallback.CorDebugEvalCompleted += new CorDebugEvalEventHandler(CorDebugEvalCompleted); } /// @@ -53,15 +53,15 @@ namespace DebuggerLibrary /// public void AsyncPerformEval() { - if (NDebugger.IsProcessRunning) { + if (NDebugger.Instance.IsProcessRunning) { throw new DebuggerException("Debugger must be paused"); } - NDebugger.CurrentThread.CorThread.CreateEval(out corEval); + NDebugger.Instance.CurrentThread.CorThread.CreateEval(out corEval); corEval.CallFunction(corFunction, (uint)args.Length, args); - - NDebugger.Continue(); + + NDebugger.Instance.Continue(); } public ICorDebugValue GetResult() diff --git a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/EvalQueue.cs b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/EvalQueue.cs index afbe4cd0de..e32f029267 100644 --- a/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/EvalQueue.cs +++ b/src/AddIns/Misc/Debugger/Debugger.Core/Project/Src/Variables/Evals/EvalQueue.cs @@ -32,7 +32,7 @@ namespace DebuggerLibrary static public void PerformNextEval() { - if (NDebugger.IsProcessRunning) { + if (NDebugger.Instance.IsProcessRunning) { return; } if (waitingEvals.Count == 0) {