public bool Notification(SingleSteppingEngine engine, Inferior inferior, NotificationType type, TargetAddress data, long arg) { switch (type) { case NotificationType.InitializeCorlib: Report.Debug (DebugFlags.JitSymtab, "Initialize corlib"); read_mono_debugger_info (inferior); read_symbol_table (inferior); read_builtin_types (inferior); break; case NotificationType.InitializeManagedCode: Report.Debug (DebugFlags.JitSymtab, "Initialize managed code"); reached_main (inferior, data); break; case NotificationType.LoadModule: { MonoSymbolFile symfile = load_symfile (inferior, data); Report.Debug (DebugFlags.JitSymtab, "Module load: {0} {1}", data, symfile); if (symfile == null) break; engine.Process.Debugger.OnModuleLoadedEvent (symfile.Module); if ((builtin_types != null) && (symfile != null)) { if (engine.OnModuleLoaded (symfile.Module)) return false; } break; } case NotificationType.UnloadModule: { Report.Debug (DebugFlags.JitSymtab, "Module unload: {0} {1}", data, arg); MonoSymbolFile symfile = (MonoSymbolFile) symfile_by_index [(int) arg]; if (symfile == null) break; engine.Process.Debugger.OnModuleUnLoadedEvent (symfile.Module); close_symfile (symfile); break; } case NotificationType.JitBreakpoint: JitBreakpoint (inferior, (int) arg, data); break; case NotificationType.DomainCreate: Report.Debug (DebugFlags.JitSymtab, "Domain create: {0}", data); add_data_table (inferior, data); break; case NotificationType.DomainUnload: Report.Debug (DebugFlags.JitSymtab, "Domain unload: {0} {1:x}", data, arg); destroy_data_table ((int) arg, data); engine.Process.BreakpointManager.DomainUnload (inferior, (int) arg); break; case NotificationType.ClassInitialized: break; case NotificationType.CreateAppDomain: create_appdomain (inferior, data); break; case NotificationType.UnloadAppDomain: unload_appdomain ((int) arg); break; default: Console.WriteLine ("Received unknown notification {0:x} / {1} {2:x}", (int) type, data, arg); break; } return true; }