Browse Source

Debugger lazy loading

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@192 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
David Srbecký 21 years ago
parent
commit
30b2d54916
  1. 18
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs
  2. 16
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs
  3. 16
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs
  4. 18
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs
  5. 17
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs
  6. 19
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
  7. 39
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs

18
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs

@ -44,7 +44,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -44,7 +44,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void InitializeComponents()
{
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debuggerCore = debugger.DebuggerCore;
debugger.Initialize += delegate {
InitializeDebugger();
};
breakpointsList = new ListView();
breakpointsList.FullRowSelect = true;
@ -61,21 +64,26 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -61,21 +64,26 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
name.Width = 300;
path.Width = 400;
RedrawContent();
}
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.DebuggingResumed += new DebuggerEventHandler(debuggerService_OnDebuggingResumed);
debuggerCore.BreakpointAdded += new DebuggerLibrary.BreakpointEventHandler(AddBreakpoint);
debuggerCore.BreakpointStateChanged += new DebuggerLibrary.BreakpointEventHandler(RefreshBreakpoint);
debuggerCore.BreakpointRemoved += new DebuggerLibrary.BreakpointEventHandler(RemoveBreakpoint);
debuggerCore.BreakpointHit += new DebuggerLibrary.BreakpointEventHandler(Breakpoints_OnBreakpointHit);
RedrawContent();
RefreshList();
}
public override void RedrawContent()
{
name.Text = "Name";
path.Text = "Path";
FillList();
}
void BreakpointsListItemCheck(object sender, ItemCheckEventArgs e)
@ -89,7 +97,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -89,7 +97,7 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
}
}
void FillList()
void RefreshList()
{
breakpointsList.ItemCheck -= new ItemCheckEventHandler(BreakpointsListItemCheck);
breakpointsList.BeginUpdate();

16
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/CallStackPad.cs

@ -44,7 +44,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -44,7 +44,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void InitializeComponents()
{
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debuggerCore = debugger.DebuggerCore;
debugger.Initialize += delegate {
InitializeDebugger();
};
callStackList = new ListView();
callStackList.FullRowSelect = true;
@ -59,18 +62,23 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -59,18 +62,23 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
name.Width = 300;
language.Width = 400;
RedrawContent();
}
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.IsDebuggingChanged += new DebuggerEventHandler(DebuggerStateChanged);
debuggerCore.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged);
RedrawContent();
RefreshList();
}
public override void RedrawContent()
{
name.Text = "Name";
language.Text = "Language";
RefreshList();
}
void CallStackListItemActivate(object sender, EventArgs e)

16
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/ExceptionHistoryPad.cs

@ -45,7 +45,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -45,7 +45,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void InitializeComponents()
{
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debuggerCore = debugger.DebuggerCore;
debugger.Initialize += delegate {
InitializeDebugger();
};
exceptionHistoryList = new ListView();
exceptionHistoryList.FullRowSelect = true;
@ -61,10 +64,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -61,10 +64,17 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
location.Width = 400;
time.Width = 80;
RedrawContent();
}
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.IsDebuggingChanged += new DebuggerEventHandler(DebuggerStateChanged);
debuggerCore.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged);
RedrawContent();
RefreshList();
}
public override void RedrawContent()
@ -72,8 +82,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -72,8 +82,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
time.Text = "Time";
exception.Text = "Exception";
location.Text = "Location";
RefreshList();
}
void ExceptionHistoryListItemActivate(object sender, EventArgs e)

18
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LoadedModulesPad.cs

@ -50,7 +50,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -50,7 +50,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void InitializeComponents()
{
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debuggerCore = debugger.DebuggerCore;
debugger.Initialize += delegate {
InitializeDebugger();
};
loadedModulesList = new ListView();
loadedModulesList.FullRowSelect = true;
@ -70,15 +73,21 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -70,15 +73,21 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
timestamp.Width = 0;//80;
information.Width = 130;
RedrawContent();
}
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.ModuleLoaded += new DebuggerLibrary.ModuleEventHandler(AddModule);
debuggerCore.ModuleUnloaded += new DebuggerLibrary.ModuleEventHandler(RemoveModule);
RedrawContent();
RefreshList();
}
public override void RedrawContent()
{
name.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.NameColumn}");
address.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.AddressColumn}");
path.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.PathColumn}");
@ -87,7 +96,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -87,7 +96,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
program.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.ProgramColumn}");
timestamp.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.TimestampColumn}");
information.Text = StringParser.Parse("${res:MainWindow.Windows.Debug.InformationColumn}");
}
void RefreshList()
{
loadedModulesList.Items.Clear();
foreach(Module m in debuggerCore.Modules) {
AddModule(this, new ModuleEventArgs(m));

17
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/LocalVarPad.cs

@ -45,7 +45,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -45,7 +45,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void InitializeComponents()
{
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debuggerCore = debugger.DebuggerCore;
debugger.Initialize += delegate {
InitializeDebugger();
};
ImageList imageList = new ImageList();
imageList.Images.Add(IconService.GetBitmap("Icons.16x16.Class"));
@ -68,9 +71,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -68,9 +71,16 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
localVarList.SizeChanged += new EventHandler(localVarList_SizeChanged);
localVarList.BeforeExpand += new TreeListViewCancelEventHandler(localVarList_BeforeExpand);
RedrawContent();
}
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.DebuggingPaused += new DebuggingPausedEventHandler(debuggerService_OnDebuggingPaused);
RedrawContent();
RefreshList();
}
// This is a walkarond for a visual issue
@ -84,7 +94,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -84,7 +94,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
name.Text = "Name";
val.Text = "Value";
type.Text = "Type";
}
void RefreshList()
{
if (debugger.IsDebugging && debugger.IsProcessRunning == false) {
debuggerService_OnDebuggingPaused(this, new DebuggingPausedEventArgs(PausedReason.StepComplete));
}

19
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs

@ -47,7 +47,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -47,7 +47,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void InitializeComponents()
{
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debuggerCore = debugger.DebuggerCore;
debugger.Initialize += delegate {
InitializeDebugger();
};
runningThreadsList = new ListView();
runningThreadsList.FullRowSelect = true;
@ -65,13 +68,19 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -65,13 +68,19 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
priority.Width = 120;
breaked.Width = 80;
RedrawContent();
}
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.ThreadStarted += new ThreadEventHandler(AddThread);
debuggerCore.ThreadStateChanged += new ThreadEventHandler(RefreshThread);
debuggerCore.ThreadExited += new ThreadEventHandler(RemoveThread);
debuggerCore.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged);
RedrawContent();
RefreshList();
}
public override void RedrawContent()
@ -81,8 +90,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -81,8 +90,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
location.Text = "Location";
priority.Text = "Priority";
breaked.Text = "Breaked";
RefreshAllItems();
}
void RunningThreadsListItemActivate(object sender, EventArgs e)
@ -131,10 +138,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads @@ -131,10 +138,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public void DebuggerStateChanged(object sender, DebuggerEventArgs e)
{
RefreshAllItems();
RefreshList();
}
private void RefreshAllItems()
private void RefreshList()
{
foreach (Thread t in debuggerCore.Threads) {
RefreshThread(this, new ThreadEventArgs(t));

39
src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs

@ -37,7 +37,7 @@ using System.Security.Policy; @@ -37,7 +37,7 @@ using System.Security.Policy;
namespace ICSharpCode.SharpDevelop.Services
{
public class WindowsDebugger:IDebugger //, IService
public class WindowsDebugger:IDebugger//, IService
{
[Serializable]
public class RemotingConfigurationHelpper
@ -87,8 +87,9 @@ namespace ICSharpCode.SharpDevelop.Services @@ -87,8 +87,9 @@ namespace ICSharpCode.SharpDevelop.Services
bool useRemotingForThreadInterop = false;
NDebugger debugger;
bool isDebuggingCache;
bool isProcessRunningCache;
bool isDebuggingCache = false;
bool isProcessRunningCache = false;
bool serviceInitialized = false;
public event EventHandler DebugStopped; // FIX: unused
@ -135,6 +136,16 @@ namespace ICSharpCode.SharpDevelop.Services @@ -135,6 +136,16 @@ namespace ICSharpCode.SharpDevelop.Services
}
public WindowsDebugger()
{
}
#region ICSharpCode.Core.Services.IService interface implementation
public event System.EventHandler Initialize;
public event System.EventHandler Unload;
public void InitializeService()
{
if (useRemotingForThreadInterop) {
// This needs to be called before instance of NDebugger is created
@ -155,16 +166,6 @@ namespace ICSharpCode.SharpDevelop.Services @@ -155,16 +166,6 @@ namespace ICSharpCode.SharpDevelop.Services
debugger = new NDebugger();
InitializeService();
}
#region ICSharpCode.Core.Services.IService interface implementation
public event System.EventHandler Initialize;
public event System.EventHandler Unload;
public void InitializeService()
{
debugger.DebuggerTraceMessage += new MessageEventHandler(DebuggerTraceMessage);
debugger.LogMessage += new MessageEventHandler(LogMessage);
debugger.DebuggingStarted += new DebuggerEventHandler(DebuggingStarted);
@ -179,12 +180,16 @@ namespace ICSharpCode.SharpDevelop.Services @@ -179,12 +180,16 @@ namespace ICSharpCode.SharpDevelop.Services
DebuggerService.BreakPointRemoved += new EventHandler(RestoreNDebuggerBreakpoints);
DebuggerService.BreakPointChanged += new EventHandler(RestoreNDebuggerBreakpoints);
RestoreNDebuggerBreakpoints(this, EventArgs.Empty);
isDebuggingCache = debugger.IsDebugging;
isProcessRunningCache = debugger.IsProcessRunning;
if (Initialize != null) {
Initialize(this, null);
}
serviceInitialized = true;
}
public void UnloadService()
@ -236,11 +241,17 @@ namespace ICSharpCode.SharpDevelop.Services @@ -236,11 +241,17 @@ namespace ICSharpCode.SharpDevelop.Services
public void StartWithoutDebugging(System.Diagnostics.ProcessStartInfo psi)
{
debugger.StartWithoutDebugging(psi);
System.Diagnostics.Process process;
process = new System.Diagnostics.Process();
process.StartInfo = psi;
process.Start();
}
public void Start(string fileName, string workingDirectory, string arguments)
{
if (!serviceInitialized) {
InitializeService();
}
debugger.Start(fileName, workingDirectory, arguments);
}

Loading…
Cancel
Save