⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 phpdebugger.py

📁 wxPython的基本示例程序
💻 PY
📖 第 1 页 / 共 5 页
字号:
                    self.handleRespFrameBps(frame)                elif frameName == FRAME_BPL:                    self.handleRespFrameBpl(frame)                elif frameName == FRAME_VER:                    self.handleRespFrameVer(frame)                elif frameName == FRAME_SID:                    self.handleRespFrameSid(frame)                elif frameName == FRAME_SRCLINESINFO:                    self.handleRespFrameSrclinesinfo(frame)                elif frameName == FRAME_SRCCTXINFO:                    self.handleRespFrameSrcctxinfo(frame)                elif frameName == FRAME_LOG:                    self.handleRespFrameLog(frame)                elif frameName == FRAME_PROF:                    self.handleRespFrameProf(frame)                elif frameName == FRAME_PROF_C:                    self.handleRespFrameProfC(frame)                elif frameName == FRAME_SET_OPT:                    self.handleRespFrameSetOpt(frame)                else:                    self.handleRespFrameUnknown(frame)                    return 0                #                # After handling of this frame, force frame to point to the                # next one based on current frame's absolute size.                #                frame = frame.getNextFrame(True)            if cmdReceived == DBGC_REPLY:                self.handleRespCmdReply()            elif cmdReceived == DBGC_STARTUP:                self.handleRespCmdStartup()            elif cmdReceived == DBGC_END:                self.handleRespCmdEnd()            elif cmdReceived == DBGC_BREAKPOINT:                self.handleRespCmdBreakpoint()                cmdReceived = 0            elif cmdReceived == DBGC_STEPINTO_DONE:                self.handleRespCmdStepintoDone()            elif cmdReceived == DBGC_STEPOVER_DONE:                self.handleRespCmdStepoverDone()            elif cmdReceived == DBGC_STEPOUT_DONE:                self.handleRespCmdStepoutDone()            elif cmdReceived == DBGC_EMBEDDED_BREAK:                self.handleRespCmdEmbeddedBreak()            elif cmdReceived == DBGC_PAUSE:                self.handleRespCmdPause()            elif cmdReceived == DBGC_ERROR:                self.handleRespCmdError()            elif cmdReceived == DBGC_LOG:                self.handleRespCmdLog()            elif cmdReceived == DBGC_SID:                self.handleRespCmdSid()            else:                self.handleRespCmdUnknown()        return cmdReceived    def handleRespFrameStack(self, stackList, frame, isFirst):        if isFirst:            stackList            = []            self.stackFrameIndex = 0        lineNo  = frame.getNextInt()        modNo   = frame.getNextInt()        scopeId = frame.getNextInt()        frameId = frame.getNextInt()        if modNo != 0:            newStackFrame = PHPStackFrame(self, self.getModByNum(modNo), lineNo, self.stackFrameIndex, scopeId, self.getRawFrameData(frameId), modNo)            stackList.append(newStackFrame)            self.stackFrameIndex = self.stackFrameIndex + 1        return stackList    def handleRespFrameSource(self, frame):        modNo           = frame.getNextInt()        fromFilePos     = frame.getNextInt()        error           = frame.getNextInt()        fullSize        = frame.getNextInt()        fileNameFrameId = frame.getNextInt()        textFrameId     = frame.getNextInt()        fileName = self.getModByNum(modNo)        if not fileName:            self.setFileMod(modNo, fileNameFrameId)        #        # TODO: fullSize string and textFrameId are not handled here.        #        return    def handleRespFrameSrcTree(self, frame):        parentModNo     = frame.getNextInt()        parentLineNo    = frame.getNextInt()        modNo           = frame.getNextInt()        fileNameFrameId = frame.getNextInt()        fileName = self.getModByNum(modNo)        if not fileName:            self.setFileMod(modNo, fileNameFrameId)        return    def handleRespFrameRawdata(self, frame):        frameNo = frame.getNextInt()        if frameNo > 0:            toRead = frame.getNextInt()            if toRead > 0:                str = frame.getNextString(toRead)                self.rawDataDict[frameNo] = str                myprint("handleRespFrameRawdata(): added \'%d\'=\'%s\' to rawDataDict.", (frameNo, str))        return    def handleRespFrameError(self, frame):        self.isErrStack = True        #        # Type of the error.        #        errInt0         = frame.getNextInt()        #        # ID of error message.        #        errInt1         = frame.getNextInt()        if errInt0 == E_ERROR:            errIdStr = "[Error]"        elif errInt0 == E_WARNING:            errIdStr = "[Warning]"        elif errInt0 == E_PARSE:            errIdStr = "[Parse Error]"        elif errInt0 == E_NOTICE:            errIdStr = "[Notice]"        elif errInt0 == E_CORE_ERROR:            errIdStr = "[Core Error]"        elif errInt0 == E_CORE_WARNING:            errIdStr = "[Core Warning]"        elif errInt0 == E_COMPILE_ERROR:            errIdStr = "[Compile Error]"        elif errInt0 == E_COMPILE_WARNING:            errIdStr = "[Compile Warning]"        elif errInt0 == E_USER_ERROR:            errIdStr = "[User Error]"        elif errInt0 == E_USER_WARNING:            errIdStr = "[User Warning]"        elif errInt0 == E_USER_NOTICE:            errIdStr = "[User Notice]"        else:            errIdStr = "[Unexpected Error]"        errMsg = self.getRawFrameData(errInt1)        if errMsg and len(errMsg) > 0:            self.errStr = errIdStr + ": " + errMsg + "\n"        else:            self.errStr = errIdStr + ": <Invalid Error Message>\n"        if not self.stopOnError:            if self.lastCommand == DBGA_CONTINUE:                self.Continue()            elif self.lastCommand == DBGA_STEPINTO:                self.SingleStep()            elif self.lastCommand == DBGA_STEPOUT:                self.Return()            elif self.lastCommand == DBGA_STEPOVER:                self.Next()        return    def handleRespFrameEval(self, frame):        evalInt0        = frame.getNextInt()        evalInt1        = frame.getNextInt()        evalInt2        = frame.getNextInt()        self.evalRet    = self.getRawFrameData(evalInt1)        #TODO: is the following necessary?        evalStr         = self.getRawFrameData(evalInt0)        return    def handleRespFrameBps(self, frame):        return    def handleRespFrameBpl(self, frame):        #        # Get this breakpoint.        #        dbgBp = []        for i in range(10):            dbgBp.append(frame.getNextInt())        if dbgBp[2] != 0:            #            # If filename is sent, get it from the rawDataDict.            #            fileName = self.getRawFrameData(dbgBp[2])            if not fileName:                return            #            # If this filename comes with a mod number, store this            # modNum/fileName into this session's modDict.  Notice it might            # overwrite previous value.            #            if dbgBp[0] != 0:                self.setMod(dbgBp[0], fileName)        elif dbgBp[0] != 0:            #            # Use modNum to get the fileName.            #            fileName = self.getModByNum(dbgBp[0])            if not fileName:                return        else:            #            # Couldn't get the filename; nothing we can do with.            #            return        bpKey = self.createBpKey(fileName, dbgBp[1])        if not self.bpDict.has_key(bpKey):            #            # Not in our bp list?  Anyway, create one for it.            #            ourBp              = BreakPoint(self, fileName, dbgBp[1], dbgBp[0], dbgBp[3], dbgBp[4], dbgBp[5], dbgBp[6], dbgBp[7], dbgBp[8], dbgBp[9])            self.bpDict[bpKey] = ourBp            newlyCreated       = True        else:            ourBp              = self.bpDict[bpKey]            newlyCreated       = False        #        # Update with the latest bp information.        #        if not newlyCreated:            ourBp.update(dbgBp)        return    def handleRespFrameVer(self, frame):        self.verMajor = frame.getNextInt()        self.verMinor = frame.getNextInt()        verFrameNo    = frame.getNextInt()        self.verDesc  = self.getRawFrameData(verFrameNo)        myprint("respFrameVer: verMajor=%s, verMinor=%s, verDesc=%s", (repr(self.verMajor), repr(self.verMinor), repr(self.verDesc)))        return    def handleRespFrameSid(self, frame):        self.sessID   = frame.getNextInt()        self.sessType = frame.getNextInt()        myprint("respFrameSid: sessID=%s, sessType=%s", (self.sessID, self.sessType))        return    def handleRespFrameSrclinesinfo(self, frame):        return    def handleRespFrameSrcctxinfo(self, frame):        return    def handleRespFrameLog(self, frame):        #        # TODO:        # Now we don't do much here besides following the protocol to retrieve        # the data.        #        logId           = frame.getNextInt()        logType         = frame.getNextInt()        modNo           = frame.getNextInt()        lineNo          = frame.getNextInt()        fileNameFrameId = frame.getNextInt()        extInfo         = frame.getNextInt()        fileName = self.getModByNum(modNo)        if not fileName:            self.setFileMod(modNo, fileNameFrameId)        return    def handleRespFrameProf(self, frame):        return    def handleRespFrameProfC(self, frame):        return    def handleRespFrameSetOpt(self, frame):        return    def handleRespCmdReply(self):        return    def handleRespCmdStartup(self):        return    def handleRespCmdEnd(self):        self.sessEnded = True        return    def handleRespCmdBreakpoint(self):        return    def handleRespCmdStepintoDone(self):        return    def handleRespCmdStepoverDone(self):        return    def handleRespCmdStepoutDone(self):        return    def handleRespCmdEmbeddedBreak(self):        return    def handleRespCmdPause(self):        return    def handleRespCmdError(self):        self.stackList = []        if len(self.errStackList) > 0:            self.errStr = self.errStr + "Stack Trace:\n"        while len(self.errStackList) > 0:            oneStack = self.errStackList.pop()            self.errStr = self.errStr + "%s\n" % oneStack.getLongDisplayStr()        self.ui.showErrorDialog(self.errStr, "PHP Error")        myprint("Got PHP Error:\n%s", self.errStr)        return    def handleRespCmdLog(self):        return    def handleRespCmdSid(self):        return    def setFileMod(self, modNo, fileNameFrameId):        if fileNameFrameId != 0:            fileName = self.getRawFrameData(fileNameFrameId)            if fileName and modNo != 0:                self.setMod(modNo, fileName)        return    def createBpKey(self, fileName, lineNo):        #        # This is to work around a bug in dbg module where it changes the path        # names that we pass to it to lower cases.        #        if sysutils.isWindows():            fileName = fileName.lower()        return (fileName, lineNo)    def setLsnrAction(self, actioni):        self.lsnrAction = actioni        return    def getLsnrAction(self):        return self.lsnrAction    def currConnFinished(self):        self.clearInternals()        self.setLsnrAction(PHPDebuggerCallback.ACTION_LISTEN)        self.actionEvent.set()        self.ui.DisableAfterStop()    def stopPhpDbg(self):        #        # TODO: should send a request to stop the current running PHP program.        #       should handle network blocking issue correctly, otherwise, we        #       might hang here.        #        reqPacket = PHPDBGPacket(DBGA_STOP)        try:            reqPacket.sendPacket(self.lsnrThr)            self.awaitAndHandleResponse(stopping = True)        except PHPDBGConnException:            pass        self.currConnFinished()        return

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -