Example #1
0
        // Error
        public static void error(string cmt)
        {
            var s = cmt + YDEF_DEBUG.RuntimeErrorInfo();

            throw new SystemException(s);
        }
Example #2
0
        //public static int? m_curFild_id=null; //base 0
        public static void BP(string[] plist)
        {
            var NL = Environment.NewLine;

            if (plist == null || plist.Length == 0)
            {
                BP_List();
                return;
            }

            var    p0 = plist[0].ToLower();
            string p1 = plist.Length > 1 ? plist[1].ToLower() : null;
            string p2 = plist.Length > 2 ? plist[2].ToLower() : null;

            if (Array.FindIndex(new string[] { "?", "h", "help" }, i => i == p0) >= 0)
            {
                var helpmsg =
                    "bp - ブレイクポインタのリスト表示                         " + NL +
                    "bp c|clear|r|reset - ブレイクポインタのクリア             " + NL +
                    "bp d NUM [FID|\"ファイル名\"]- NUM行のブレイクポインタ削除                    " + NL +
                    "bp NUM [FID|\"ファイル名\"] - カレントファイルのnum行目にブレイクポインタ設定  " + NL +
                    "bp f FID - file FIDのファイルに変更                       " + NL +
                    "bp f - BP設定対象のファイル名表示                         " + NL +
                    "                                                          " + NL +
                    "bpを設定すると debug 1も同時設定される。                  " + NL;

                SendWriteLine(helpmsg);
                return;
            }

            if (Array.FindIndex(new string[] { "c", "clear", "r", "reset" }, i => i == p0) >= 0)
            {
                slagtool.YDEF_DEBUG.ResetAllBreakpoints();
                SendWriteLine("全てのブレイクポイントをクリアしました。");
                return;
            }

            if (p0 == "f")
            {
                if (p1 == null)
                {
                    SendWriteLine("カレントファイル:" + slagtool.YDEF_DEBUG.cur_filename);
                    return;
                }
                var num = intparse(p1);
                if (num == null || (int)num < 0)
                {
                    SendWriteLine("削除の行番号が不正です。");
                    return;
                }
                var dnum = (int)num;
                slagtool.YDEF_DEBUG.cur_file_id = dnum;
                SendWriteLine("カレントファイルを変更しました。カレントファイル:" + slagtool.YDEF_DEBUG.cur_filename);
                return;
            }

            //BP X 行 ["ファイル名" or ファイル番号]    -- on/off逆転
            if (p0 == "x")
            {
                var num = intparse(p1);
                if (num == null || (int)num < 0)
                {
                    SendWriteLine("削除の行番号が不正です。");
                    return;
                }
                var line = (int)num;

                YDEF_DEBUG.FlipBreakpoint(line, p2);

                GetBp();

                return;
            }


            if (p0 == "d" && !string.IsNullOrEmpty(p1))
            {
                var num = intparse(p1);
                if (num == null || (int)num < 0)
                {
                    SendWriteLine("削除の行番号が不正です。");
                    return;
                }
                int dnum = (int)num;
                var b    = slagtool.YDEF_DEBUG.DelBreakpoint(dnum, p2);
                if (b)
                {
                    SendWriteLine("削除しました。");
                }
                else
                {
                    SendWriteLine("削除の入力が不正です。");
                }
                return;
            }

            if (!string.IsNullOrEmpty(p0))
            {
                var num = intparse(p0);
                if (num == null || (int)num < 0)
                {
                    SendWriteLine("設定行番号が不正です。");
                    return;
                }
                int dnum = (int)num;

                slagtool.YDEF_DEBUG.AddBreakpoint(dnum, p2);
                SendWriteLine("設定しました。");

                if (slagtool.sys.DEBUGLEVEL == 0)
                {
                    slagtool.util.SetDebugLevel(1);
                    SendWriteLine("デバッグレベル1を設定しました。");
                }

                return;
            }
        }