Пример #1
0
        public void StopDebugger()
        {
            try {
                Process oldProcess;
                lock (this) {
                    if (debugger == null)
                    {
                        return;
                    }
                    runningEvent.Reset();
                    exitedEvent.Reset();
                    exitRequestEvent.Set();
                    oldProcess = process;
                    debugger   = null;
                    process    = null;
                }

                if (!exitedEvent.WaitOne(2000, false))
                {
                    try {
                        oldProcess.Kill();
                    } catch {
                    }
                }
            } catch (Exception ex) {
                Console.WriteLine(ex);
            }
        }
		public void RegisterDebugger (IDebuggerServer debugger)
		{
			lock (this)
			{
				this.debugger = debugger;
				runningEvent.Set ();
			}
		}
Пример #3
0
 public void RegisterDebugger(IDebuggerServer debugger)
 {
     lock (this)
     {
         this.debugger = debugger;
         runningEvent.Set();
     }
 }
        public InjectionRuntime(IApiBridge bridge, IDebuggerServer debuggerServer, ITimeSource timeSource, Func <CancellationToken?> retrieveCancellationToken)
        {
            paths = new Paths(() => Path.GetDirectoryName(CurrentScript.FileName));

            Api = new InjectionApi(bridge, Metadata, State, timeSource, paths);
            RegisterNatives();
            this.bridge                    = bridge;
            this.debuggerServer            = debuggerServer;
            this.timeSource                = timeSource;
            this.retrieveCancellationToken = retrieveCancellationToken;

            CurrentScript = new ScriptFile("<empty>", string.Empty, null);
            interpreter   = new ThreadLocal <Interpreter>(()
                                                          => new Interpreter(Metadata, CurrentScript.FileName, debuggerServer.Create(), retrieveCancellationToken));
        }
Пример #5
0
        void ProcessExited(object sender, EventArgs args)
        {
            lock (this) {
                exitedEvent.Set();
                Process p = (Process)sender;
                if (p != process)
                {
                    return;
                }

                // The process suddently died
                runningEvent.Reset();
                debugger = null;
                process  = null;
            }
        }
		public void StopDebugger ()
		{
			try {
				Process oldProcess;
				lock (this) {
					if (debugger == null)
						return;
					runningEvent.Reset ();
					exitedEvent.Reset ();
					exitRequestEvent.Set ();
					oldProcess = process;
					debugger = null;
					process = null;
				}
	
				if (!exitedEvent.WaitOne (2000, false)) {
					try {
						oldProcess.Kill ();
					} catch {
					}
				}
			} catch (Exception ex) {
				Console.WriteLine (ex);
			}
		}
		void ProcessExited (object sender, EventArgs args)
		{
			lock (this) {
				exitedEvent.Set ();
				Process p = (Process) sender;
				if (p != process) return;

				// The process suddently died
				runningEvent.Reset ();
				debugger = null;
				process = null;
			}
		}
Пример #8
0
 public InjectionRuntime(IApiBridge bridge, IDebuggerServer debuggerServer, ITimeSource timeSource)
 {
     interpreter = new ThreadLocal <Interpreter>(() => new Interpreter(Metadata, CurrentFileName, debuggerServer.Create()));
     Api         = new InjectionApi(bridge, Metadata, Globals, timeSource);
     RegisterNatives();
 }