Example #1
0
        /////////////////////////////////////////////////////////////////////////////////////
        private void setControlStatement(BasicBlock current, BreakCmd breakCmd, BasicBlock next)
        {
            Debug.Assert(breakCmd.BreakEnclosure != null);

            string breakTargetLabel = null;

            if (breakCmd.BreakEnclosure.successorBigBlock != null)
            {
                breakTargetLabel = breakCmd.BreakEnclosure.successorBigBlock.LabelName;
            }
            else
            {
                breakTargetLabel = "$exit";
            }

            current.setControlStatement(new UnconditionalBranch(current, cfg.lookupOrAddNode(breakTargetLabel)));
        }
Example #2
0
        public override void SetBreakpoints(Response response, dynamic args)
        {
            string path = null;

            if (args.source != null)
            {
                string p = (string)args.source.path;
                if (p != null && p.Trim().Length > 0)
                {
                    path = p;
                }
            }
            if (path == null)
            {
                SendErrorResponse(response, 3010, "setBreakpoints: property 'source' is empty or misformed", null, false, true);
                return;
            }
            path = ConvertClientPathToDebugger(path);

            int[] clientLines = args.lines.ToObject <int[]>();

            var file = path.Replace(_t_work_dir, "").Trim('/', '\\');

            BreakCmd cmd = new BreakCmd();

            cmd.m_file     = file;
            cmd.m_cmd_mode = BreakCmd.BreakCmdMode.ResetOneFile;

            var breakpoints = new List <Breakpoint>();

            for (var i = 0; i < clientLines.Length; ++i)
            {
                var l = ConvertClientLineToDebugger(clientLines[i]);
                var p = new BreakPoint();
                p.file_name = file;
                p.line      = l;
                cmd.m_break_points.Add(p);
                breakpoints.Add(new Breakpoint(true, clientLines[i]));
            }
            SendOneCmdAndWaitForResponse(cmd);

            SendResponse(response, new SetBreakpointsResponseBody(breakpoints));
        }
Example #3
0
        DebugCmd ParseCmd(string line)
        {
            string[] args = System.Text.RegularExpressions.Regex.Split(line, @"\s+");
            if (args.Length == 0)
            {
                return(null);
            }
            if (args[0] == "b" && args.Length == 3)
            {
                BreakCmd   cmd   = new BreakCmd();
                BreakPoint point = new BreakPoint();
                point.file_name = args[1];
                point.line      = Convert.ToInt32(args[2]);
                cmd.m_cmd_mode  = BreakCmd.BreakCmdMode.Set;
                cmd.m_break_points.Add(point);
                return(cmd);
            }
            else if (args[0] == "br" && args.Length >= 2)
            {
                BreakCmd cmd = new BreakCmd();
                if (args[1] == "list")
                {
                    cmd.m_cmd_mode = BreakCmd.BreakCmdMode.List;
                    return(cmd);
                }
                else if (args[1] == "clear")
                {
                    cmd.m_cmd_mode = BreakCmd.BreakCmdMode.DeleteAll;
                    return(cmd);
                }
                else if (args[1] == "delete" && args.Length >= 3)
                {
                    cmd.m_cmd_mode = BreakCmd.BreakCmdMode.Delete;
                    for (int i = 2; i < args.Length; ++i)
                    {
                        BreakPoint point = new BreakPoint();
                        point.index = Convert.ToInt32(args[i]);
                        cmd.m_break_points.Add(point);
                    }
                    return(cmd);
                }
            }
            else if (args[0] == "c")
            {
                Continue cmd = new Continue();
                return(cmd);
            }
            else if (args[0] == "n")
            {
                StepOver cmd = new StepOver();
                return(cmd);
            }
            else if (args[0] == "s")
            {
                StepIn cmd = new StepIn();
                return(cmd);
            }
            else if (args[0] == "f")
            {
                StepOut cmd = new StepOut();
                return(cmd);
            }
            else if (args[0] == "bt")
            {
                BackTraceCmd cmd = new BackTraceCmd();
                return(cmd);
            }
            else if (args[0] == "p" && args.Length == 2)
            {
                PrintCmd cmd = new PrintCmd();
                cmd.m_name = args[1];
                return(cmd);
            }
            else if (args[0] == "t")
            {
                Terminate cmd = new Terminate();
                return(cmd);
            }
            else if (args[0] == "h")
            {
                Console.Write(_help_info);
            }
            else
            {
                Console.WriteLine("what do you want? type 'h' for help");
            }

            return(null);
        }