internal static void InternalRun (ExecutionCommand cmd, DebuggerEngine factory, IConsole c) { if (factory == null) { factory = GetFactoryForCommand (cmd); if (factory == null) throw new InvalidOperationException ("Unsupported command: " + cmd); } DebuggerStartInfo startInfo = factory.CreateDebuggerStartInfo (cmd); startInfo.UseExternalConsole = c is ExternalConsole; startInfo.CloseExternalConsoleOnExit = c.CloseOnDispose; currentEngine = factory; session = factory.CreateSession (); session.ExceptionHandler = ExceptionHandler; session.Initialize (); // When using an external console, create a new internal console which will be used // to show the debugger log if (startInfo.UseExternalConsole) console = (IConsole) IdeApp.Workbench.ProgressMonitors.GetOutputProgressMonitor (GettextCatalog.GetString ("Application Output"), Stock.RunProgramIcon, true, true); else console = c; SetupSession (); try { session.Run (startInfo, GetUserOptions ()); } catch { Cleanup (); throw; } }
internal static void InternalRun (ExecutionCommand cmd, DebuggerEngine factory, IConsole c) { if (factory == null) { factory = GetFactoryForCommand (cmd); if (factory == null) throw new InvalidOperationException ("Unsupported command: " + cmd); } if (session != null) throw new InvalidOperationException ("A debugger session is already started"); DebuggerStartInfo startInfo = factory.CreateDebuggerStartInfo (cmd); startInfo.UseExternalConsole = c is ExternalConsole; startInfo.CloseExternalConsoleOnExit = c.CloseOnDispose; currentEngine = factory; session = factory.CreateSession (); session.ExceptionHandler = ExceptionHandler; // When using an external console, create a new internal console which will be used // to show the debugger log if (startInfo.UseExternalConsole) console = (IConsole) IdeApp.Workbench.ProgressMonitors.GetRunProgressMonitor (); else console = c; SetupSession (); // Dispatch synchronously to avoid start/stop races DispatchService.GuiSyncDispatch (delegate { oldLayout = IdeApp.Workbench.CurrentLayout; IdeApp.Workbench.CurrentLayout = "Debug"; }); try { session.Run (startInfo, GetUserOptions ()); } catch { Cleanup (); throw; } }
internal static void InternalRun (ExecutionCommand cmd, DebuggerEngine factory, IConsole c) { if (factory == null) { factory = GetFactoryForCommand (cmd); if (factory == null) throw new InvalidOperationException ("Unsupported command: " + cmd); } DebuggerStartInfo startInfo = factory.CreateDebuggerStartInfo (cmd); startInfo.UseExternalConsole = c is ExternalConsole; startInfo.CloseExternalConsoleOnExit = c.CloseOnDispose; currentEngine = factory; session = factory.CreateSession (); session.Initialize (); console = c; SetupSession (); try { session.Run (startInfo, GetUserOptions ()); } catch { Cleanup (); throw; } }