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. 20
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/BreakPointsPad.cs
  2. 18
      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. 23
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Pads/RunningThreadsPad.cs
  7. 39
      src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/WindowsDebugger.cs

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

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

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

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

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

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

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

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

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

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

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

@ -47,8 +47,11 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
void InitializeComponents() void InitializeComponents()
{ {
debugger = (WindowsDebugger)DebuggerService.CurrentDebugger; debugger = (WindowsDebugger)DebuggerService.CurrentDebugger;
debuggerCore = debugger.DebuggerCore;
debugger.Initialize += delegate {
InitializeDebugger();
};
runningThreadsList = new ListView(); runningThreadsList = new ListView();
runningThreadsList.FullRowSelect = true; runningThreadsList.FullRowSelect = true;
runningThreadsList.AutoArrange = true; runningThreadsList.AutoArrange = true;
@ -64,14 +67,20 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
location.Width = 250; location.Width = 250;
priority.Width = 120; priority.Width = 120;
breaked.Width = 80; breaked.Width = 80;
RedrawContent();
}
public void InitializeDebugger()
{
debuggerCore = debugger.DebuggerCore;
debuggerCore.ThreadStarted += new ThreadEventHandler(AddThread); debuggerCore.ThreadStarted += new ThreadEventHandler(AddThread);
debuggerCore.ThreadStateChanged += new ThreadEventHandler(RefreshThread); debuggerCore.ThreadStateChanged += new ThreadEventHandler(RefreshThread);
debuggerCore.ThreadExited += new ThreadEventHandler(RemoveThread); debuggerCore.ThreadExited += new ThreadEventHandler(RemoveThread);
debuggerCore.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged); debuggerCore.IsProcessRunningChanged += new DebuggerEventHandler(DebuggerStateChanged);
RedrawContent(); RefreshList();
} }
public override void RedrawContent() public override void RedrawContent()
@ -81,8 +90,6 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
location.Text = "Location"; location.Text = "Location";
priority.Text = "Priority"; priority.Text = "Priority";
breaked.Text = "Breaked"; breaked.Text = "Breaked";
RefreshAllItems();
} }
void RunningThreadsListItemActivate(object sender, EventArgs e) void RunningThreadsListItemActivate(object sender, EventArgs e)
@ -131,10 +138,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public void DebuggerStateChanged(object sender, DebuggerEventArgs e) public void DebuggerStateChanged(object sender, DebuggerEventArgs e)
{ {
RefreshAllItems(); RefreshList();
} }
private void RefreshAllItems() private void RefreshList()
{ {
foreach (Thread t in debuggerCore.Threads) { foreach (Thread t in debuggerCore.Threads) {
RefreshThread(this, new ThreadEventArgs(t)); 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;
namespace ICSharpCode.SharpDevelop.Services namespace ICSharpCode.SharpDevelop.Services
{ {
public class WindowsDebugger:IDebugger //, IService public class WindowsDebugger:IDebugger//, IService
{ {
[Serializable] [Serializable]
public class RemotingConfigurationHelpper public class RemotingConfigurationHelpper
@ -87,8 +87,9 @@ namespace ICSharpCode.SharpDevelop.Services
bool useRemotingForThreadInterop = false; bool useRemotingForThreadInterop = false;
NDebugger debugger; NDebugger debugger;
bool isDebuggingCache; bool isDebuggingCache = false;
bool isProcessRunningCache; bool isProcessRunningCache = false;
bool serviceInitialized = false;
public event EventHandler DebugStopped; // FIX: unused public event EventHandler DebugStopped; // FIX: unused
@ -135,6 +136,16 @@ namespace ICSharpCode.SharpDevelop.Services
} }
public WindowsDebugger() public WindowsDebugger()
{
}
#region ICSharpCode.Core.Services.IService interface implementation
public event System.EventHandler Initialize;
public event System.EventHandler Unload;
public void InitializeService()
{ {
if (useRemotingForThreadInterop) { if (useRemotingForThreadInterop) {
// This needs to be called before instance of NDebugger is created // This needs to be called before instance of NDebugger is created
@ -155,16 +166,6 @@ namespace ICSharpCode.SharpDevelop.Services
debugger = new NDebugger(); 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.DebuggerTraceMessage += new MessageEventHandler(DebuggerTraceMessage);
debugger.LogMessage += new MessageEventHandler(LogMessage); debugger.LogMessage += new MessageEventHandler(LogMessage);
debugger.DebuggingStarted += new DebuggerEventHandler(DebuggingStarted); debugger.DebuggingStarted += new DebuggerEventHandler(DebuggingStarted);
@ -179,12 +180,16 @@ namespace ICSharpCode.SharpDevelop.Services
DebuggerService.BreakPointRemoved += new EventHandler(RestoreNDebuggerBreakpoints); DebuggerService.BreakPointRemoved += new EventHandler(RestoreNDebuggerBreakpoints);
DebuggerService.BreakPointChanged += new EventHandler(RestoreNDebuggerBreakpoints); DebuggerService.BreakPointChanged += new EventHandler(RestoreNDebuggerBreakpoints);
RestoreNDebuggerBreakpoints(this, EventArgs.Empty);
isDebuggingCache = debugger.IsDebugging; isDebuggingCache = debugger.IsDebugging;
isProcessRunningCache = debugger.IsProcessRunning; isProcessRunningCache = debugger.IsProcessRunning;
if (Initialize != null) { if (Initialize != null) {
Initialize(this, null); Initialize(this, null);
} }
serviceInitialized = true;
} }
public void UnloadService() public void UnloadService()
@ -236,11 +241,17 @@ namespace ICSharpCode.SharpDevelop.Services
public void StartWithoutDebugging(System.Diagnostics.ProcessStartInfo psi) 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) public void Start(string fileName, string workingDirectory, string arguments)
{ {
if (!serviceInitialized) {
InitializeService();
}
debugger.Start(fileName, workingDirectory, arguments); debugger.Start(fileName, workingDirectory, arguments);
} }

Loading…
Cancel
Save