Example #1
0
        public bool OnInitialBreakpointReached(int Address, int BreakpointIndex)
        {
            if (BreakpointsToAddAfterStartup.Count == 0)
            {
                return(false);
            }
            // now add all later breakpoints
            foreach (Types.Breakpoint bp in BreakpointsToAddAfterStartup)
            {
                if ((bp.TriggerOnLoad) ||
                    (bp.TriggerOnStore))
                {
                    if (bp.TriggerOnExec)
                    {
                        // this was already added, remove
                        Debugger.DeleteBreakpoint(bp.RemoteIndex, bp);
                        bp.RemoteIndex = -1;
                    }

                    /*
                     * VICERemoteDebugger.RequestData delData = new VICERemoteDebugger.RequestData( VICERemoteDebugger.Request.ADD_BREAKPOINT, bp.Address );
                     * delData.Breakpoint = bp;
                     * Debugger.QueueRequest( delData );
                     */
                    Debugger.AddBreakpoint(bp);
                }
            }
            // only auto-go on if the initial break point was not the fake first breakpoint
            if (Address != LateBreakpointOverrideDebugStart)
            {
                // need to add new intermediate break point
                Types.Breakpoint bpTemp = new C64Studio.Types.Breakpoint();

                bpTemp.Address       = LateBreakpointOverrideDebugStart;
                bpTemp.TriggerOnExec = true;
                bpTemp.Temporary     = true;

                Debugger.AddBreakpoint(bpTemp);

                /*
                 * RemoteDebugger.RequestData addNewBP = new RemoteDebugger.RequestData( RemoteDebugger.Request.ADD_BREAKPOINT, m_LateBreakpointOverrideDebugStart );
                 * addNewBP.Breakpoint = bpTemp;
                 * Debugger.QueueRequest( addNewBP );*/
            }
            // and auto-go on with debugging
            Debugger.Run();

            if (MarkedDocument != null)
            {
                MarkLine(MarkedDocument.DocumentInfo.Project, MarkedDocument.DocumentInfo.FullPath, -1);
                MarkedDocument = null;
            }

            Core.Executing.BringToForeground();

            FirstActionAfterBreak = false;
            Core.MainForm.SetGUIForDebugging(true);
            return(true);
        }