Ejemplo n.º 1
0
        private static void DebuDebugger()
        {
            cscriptProc = ConsoleSelectDebugProcess();

            if (cscriptProc == null)
            {
                return;
            }

            var ad = new ApplicationDebugger();

            Console.WriteLine("Connecting...");
            cscriptProc.ConnectDebugger(ad);
            Console.WriteLine("Connected to " + cscriptProc.GetName());
            // TODO: make the breakpoint thing more event based;
            //       so extend ApplicationDebugger by some events and register an event which just resumes on a key press

            ad.BreakPoint += Handle_BreakPoint;

            ad.Close += Handle_Close;

            Console.WriteLine("Waiting for BreakPoint...");

            try
            {
                while (Connected)
                {
                    while (breakPoints.Any())
                    {
                        var bp = breakPoints.Pop();
                        Console.WriteLine("I: StepIn");
                        Console.WriteLine("O: StepOver");
                        Console.WriteLine("P: StepOut");
                        Console.WriteLine("ENTER: Continue");
                        switch (Console.ReadKey().Key)
                        {
                        case ConsoleKey.I:
                            cscriptProc.StepIn(bp);
                            break;

                        case ConsoleKey.O:
                            cscriptProc.StepOver(bp);
                            break;

                        case ConsoleKey.P:
                            cscriptProc.StepOut(bp);
                            break;

                        case ConsoleKey.Enter:
                            cscriptProc.Continue(bp);
                            break;
                        }
                    }

                    Thread.Sleep(300);
                }
            }
            finally
            {
                ad = null;
            }
        }