diff --git a/src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs b/src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs index 0151f5e46f..929b1e6b74 100644 --- a/src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs +++ b/src/AddIns/Debugger/Debugger.Core/ManagedCallback.cs @@ -352,7 +352,9 @@ namespace Debugger EnterCallback("CreateAppDomain", pAppDomain); pAppDomain.Attach(); - process.appDomains.Add(new AppDomain(process, pAppDomain)); + AppDomain appDomain = new AppDomain(process, pAppDomain); + process.appDomains.Add(appDomain); + process.OnAppDomainCreated(appDomain); ExitCallback(); } @@ -475,7 +477,9 @@ namespace Debugger { EnterCallback("ExitAppDomain", pAppDomain); - process.appDomains.Remove(process.GetAppDomain(pAppDomain)); + AppDomain appDomain = process.GetAppDomain(pAppDomain); + process.appDomains.Remove(appDomain); + process.OnAppDomainDestroyed(appDomain); ExitCallback(); } diff --git a/src/AddIns/Debugger/Debugger.Core/NDebugger.cs b/src/AddIns/Debugger/Debugger.Core/NDebugger.cs index c7ba570052..4d38d5592a 100644 --- a/src/AddIns/Debugger/Debugger.Core/NDebugger.cs +++ b/src/AddIns/Debugger/Debugger.Core/NDebugger.cs @@ -184,7 +184,7 @@ namespace Debugger foreach (Process process in this.Processes) { foreach(Module module in process.Modules) { breakpoint.SetBreakpoint(module); - } + } } } @@ -251,7 +251,7 @@ namespace Debugger { // Detach all processes. foreach(Process process in this.Processes) { - if (process == null || process.HasExited) + if (process == null || process.HasExited) continue; process.Detach(); } @@ -266,9 +266,9 @@ namespace Debugger // this option overrides the others return false; } - if (systemStartOptions.Contains("/debug") || - systemStartOptions.Contains("/crashdebug") || - systemStartOptions.Contains("/debugport") || + if (systemStartOptions.Contains("/debug") || + systemStartOptions.Contains("/crashdebug") || + systemStartOptions.Contains("/debugport") || systemStartOptions.Contains("/baudrate")) { return true; } else { @@ -287,7 +287,7 @@ namespace Debugger if (!isPaused) process.Break(); - // We need to be paused for this + // We need to be paused for this foreach(Module module in process.Modules) { module.LoadSymbolsFromDisk(this.Options.SymbolsSearchPaths); module.ResetJustMyCode(); @@ -346,6 +346,18 @@ namespace Debugger } } + [Serializable] + public class AppDomainEventArgs: DebuggerEventArgs + { + public AppDomain AppDomain { get; private set; } + + public AppDomainEventArgs(AppDomain appDomain) + { + this.Process = appDomain.Process; + this.AppDomain = appDomain; + } + } + [Serializable] public class MessageEventArgs : EventArgs { diff --git a/src/AddIns/Debugger/Debugger.Core/Process.cs b/src/AddIns/Debugger/Debugger.Core/Process.cs index cab1ad89a0..e977cea99f 100644 --- a/src/AddIns/Debugger/Debugger.Core/Process.cs +++ b/src/AddIns/Debugger/Debugger.Core/Process.cs @@ -32,6 +32,8 @@ namespace Debugger public event EventHandler LogMessage; public event EventHandler ModuleLoaded; public event EventHandler ModuleUnloaded; + public event EventHandler AppDomainCreated; + public event EventHandler AppDomainDestroyed; public event EventHandler Paused; public event EventHandler Resumed; public event EventHandler Exited; @@ -603,5 +605,15 @@ namespace Debugger } #endregion + + internal void OnAppDomainCreated(AppDomain appDomain) + { + + } + + internal void OnAppDomainDestroyed(AppDomain appDomain) + { + + } } }