From: cperkonig Date: Wed, 11 Feb 2004 22:03:08 +0000 (+0000) Subject: deletet because wrongly uploaded X-Git-Url: http://git.phpeclipse.com?hp=852d65dec46400166081852f3db6b71c4b06364c deletet because wrongly uploaded --- diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/.#PHPDBGInterface.java.1.3 b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/.#PHPDBGInterface.java.1.3 deleted file mode 100644 index 266460b..0000000 --- a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/.#PHPDBGInterface.java.1.3 +++ /dev/null @@ -1,800 +0,0 @@ -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html - -Contributors: - Vicente Fernando - www.alfersoft.com.ar - Initial implementation - Christian Perkonig - remote debug -**********************************************************************/ -package net.sourceforge.phpdt.internal.debug.core; - -import java.io.IOException; -import java.io.BufferedReader; -import java.io.OutputStream; -import java.util.Vector; -import java.lang.System; -import org.eclipse.debug.core.DebugException; -import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame; -import net.sourceforge.phpdt.internal.debug.core.model.PHPVariable; -import net.sourceforge.phpdt.internal.debug.core.model.PHPValue; -import net.sourceforge.phpdt.internal.debug.core.PHPDBGMod; - -public class PHPDBGInterface { - - // Public - public boolean sessionEnded= false; - public int sessType= -1; - public int BPUnderHit= 0; - public String sessID= new String(); - - // Private - private int[] LastBPRead= new int[10]; - private Vector DBGBPList= new Vector(); - private PHPStackFrame[] DBGStackList; - private PHPVariable[] DBGVariableList; - private Vector DBGMods= new Vector(); - private Vector DBGVars= new Vector(); - private BufferedReader in; - private OutputStream os; - private boolean shouldStop= false, isRef= false, hasChildren= false, isObject= false; - private String evalRet= new String(""); - private String serGlobals= new String(""); - private String typeRead= new String(""); - private String className= new String(""); - private int finalPos=0, refCounter=0, rawCounter=1000; - private PHPDBGProxy proxy= null; - private int lastCmd=-1; - private int sid=0; - - public PHPDBGInterface(BufferedReader in, OutputStream os, PHPDBGProxy proxy) { - DBGBPList.clear(); - this.in= in; - this.os= os; - this.proxy= proxy; - } - - public int addBreakpoint(String mod_name, int line) throws IOException { - return setBreakpoint(mod_name, "", line, PHPDBGBase.BPS_ENABLED + PHPDBGBase.BPS_UNRESOLVED, 0, 0, 0, 0, 0); - } - - public void removeBreakpoint(String mod_name, int line, int bpNo) throws IOException { - setBreakpoint(mod_name, "", line, PHPDBGBase.BPS_DISABLED, 0, 0, 0, bpNo, 0); - } - - public void requestDBGVersion() throws IOException { - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_REQUEST); - PHPDBGFrame DBGFrame= new PHPDBGFrame(PHPDBGBase.FRAME_VER); - - DBGPacket.addFrame(DBGFrame); - - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - } - - public void getSourceTree() throws IOException { - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_REQUEST); - PHPDBGFrame DBGFrame= new PHPDBGFrame(PHPDBGBase.FRAME_SRC_TREE); - - DBGPacket.addFrame(DBGFrame); - - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - - // Wait response (1 second) and read response - waitResponse(1000); - flushAllPackets(); - } - - public void addDBGModName(String modName) throws IOException { - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_REQUEST); - PHPDBGFrame DBGFrame= new PHPDBGFrame(PHPDBGBase.FRAME_RAWDATA); - - rawCounter++; - DBGFrame.addInt(rawCounter); // FRAME_RAWDATA ID - DBGFrame.addInt(modName.length() + 1); // length of rawdata (+ null char) - DBGFrame.addString(modName); // file name - DBGFrame.addChar('\0'); // null char - - DBGPacket.addFrame(DBGFrame); - - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - } - - // Returns DBG Breakpoint ID - private int setBreakpoint(String mod_name, String condition, int line, int state, int istemp, int hitcount, int skiphits, int bpno, int isunderhit) throws IOException { - int modNo= 0; - - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_REQUEST); - PHPDBGFrame DBGFrame1= new PHPDBGFrame(PHPDBGBase.FRAME_BPS); - PHPDBGFrame DBGFrame2= new PHPDBGFrame(PHPDBGBase.FRAME_RAWDATA); - - modNo= getModByName(mod_name); - - if(modNo >= 0) { - DBGFrame1.addInt(modNo); // mod number - } else { - DBGFrame1.addInt(0); // mod number (0 use file name) - } - - DBGFrame1.addInt(line); // line number - - if(modNo >= 0) { - DBGFrame1.addInt(0); // use mod number - } else { - rawCounter++; - DBGFrame1.addInt(rawCounter); // ID of FRAME_RAWDATA to send file name - } - - DBGFrame1.addInt(state); // state BPS_* - DBGFrame1.addInt(istemp); // istemp - DBGFrame1.addInt(hitcount); // hit count - DBGFrame1.addInt(skiphits); // skip hits - DBGFrame1.addInt(0); // ID of condition - DBGFrame1.addInt(bpno); // breakpoint number - DBGFrame1.addInt(isunderhit); // is under hit - - if(modNo < 0) { - DBGFrame2.addInt(rawCounter); // FRAME_RAWDATA ID - DBGFrame2.addInt(mod_name.length() + 1); // length of rawdata (+ null char) - DBGFrame2.addString(mod_name); // file name - DBGFrame2.addChar('\0'); // null char - // First add file name data - DBGPacket.addFrame(DBGFrame2); - } - - // Second add command data - DBGPacket.addFrame(DBGFrame1); - - if(proxy.getSocket().isClosed()) return 0; - DBGPacket.sendPacket(os); - - clearLastBP(); - - // Wait response (1 second) and read response - waitResponse(1000); - flushAllPackets(); - - return LastBPRead[8]; - } - - private void clearLastBP() { - int i; - - for(i=0; i < LastBPRead.length; i++) - LastBPRead[i]= 0; - } - - private void copyToLastBP(int[] BPBody) { - int i; - - for(i=0; i < LastBPRead.length; i++) - LastBPRead[i]= BPBody[i]; - } - - public void continueExecution() throws IOException { - BPUnderHit= 0; - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_CONTINUE); - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - } - - private int getBPUnderHit() { - int i, BPUnder=0; - int[] dbg_bpl_body= new int[10]; - - // look for bp under hit - for(i=0; i < DBGBPList.size(); i++) { - dbg_bpl_body= (int[]) DBGBPList.get(i); - if(dbg_bpl_body[9] == 1) { - BPUnder= dbg_bpl_body[8]; - } - } - return BPUnder; - } - - public int getLastCmd() - { - return lastCmd; - } - - public int getSID() - { - return sid; - } - - public void setLastCmd(int cmd) - { - lastCmd=cmd; - } - - public void stepInto() throws IOException { - BPUnderHit= 0; - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_STEPINTO); - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - } - - public void stepOver() throws IOException { - BPUnderHit= 0; - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_STEPOVER); - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - } - - public void stepOut() throws IOException { - BPUnderHit= 0; - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_STEPOUT); - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - } - - public void stopExecution() throws IOException { - BPUnderHit= 0; - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_STOP); - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - } - - public PHPVariable[] getVariables(PHPStackFrame stack) throws IOException, DebugException { - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_REQUEST); - PHPDBGFrame DBGFrame1= new PHPDBGFrame(PHPDBGBase.FRAME_EVAL); - //PHPDBGFrame DBGFrame2= new PHPDBGFrame(PHPDBGBase.FRAME_RAWDATA); - - DBGFrame1.addInt(0); // istr = raw data ID - DBGFrame1.addInt(1); // scope_id = -1 means current location, 0 never used, +1 first depth - - /* - String evalBlock= new String("$GLOBALS"); - DBGFrame2.addInt(1); // FRAME_RAWDATA ID - DBGFrame2.addInt(evalBlock.length() + 1); // length of rawdata (+ null char) - DBGFrame2.addString(evalBlock); // eval block - DBGFrame2.addChar('\0'); // null char - */ - - // Add command data - DBGPacket.addFrame(DBGFrame1); - - if(proxy.getSocket().isClosed()) return null; - DBGPacket.sendPacket(os); - - waitResponse(1000); - flushAllPackets(); - - // Process serialized variables - DBGVariableList= procVars(stack); - - return DBGVariableList; - } - - public void evalBlock(String evalString) throws IOException, DebugException { - PHPDBGPacket DBGPacket= new PHPDBGPacket(PHPDBGBase.DBGA_REQUEST); - PHPDBGFrame DBGFrame1= new PHPDBGFrame(PHPDBGBase.FRAME_EVAL); - PHPDBGFrame DBGFrame2= new PHPDBGFrame(PHPDBGBase.FRAME_RAWDATA); - - rawCounter++; - DBGFrame1.addInt(rawCounter); // istr = raw data ID - DBGFrame1.addInt(1); // scope_id = -1 means current location, 0 never used, +1 first depth - - DBGFrame2.addInt(rawCounter); // FRAME_RAWDATA ID - DBGFrame2.addInt(evalString.length() + 1); // length of rawdata (+ null char) - DBGFrame2.addString(evalString); // eval block - DBGFrame2.addChar('\0'); // null char - - // Add raw data first - DBGPacket.addFrame(DBGFrame2); - // Add command data - DBGPacket.addFrame(DBGFrame1); - - if(proxy.getSocket().isClosed()) return; - DBGPacket.sendPacket(os); - - waitResponse(1000); - flushAllPackets(); - } - - public void flushAllPackets() throws IOException { - while(readResponse() != 0); - } - - public String getModByNo(int modNo) { - int i; - PHPDBGMod dbg_mod; - - // look for mod - for(i=0; i < DBGMods.size(); i++) { - dbg_mod= (PHPDBGMod) DBGMods.get(i); - if(dbg_mod.getNo() == modNo) { - return dbg_mod.getName(); - } - } - return ""; - } - - private int getModByName(String modName) { - int i; - PHPDBGMod dbg_mod; - - // look for mod - for(i=0; i < DBGMods.size(); i++) { - dbg_mod= (PHPDBGMod) DBGMods.get(i); - if(dbg_mod.getName().equalsIgnoreCase(modName)) { - return dbg_mod.getNo(); - } - } - return -1; - } - - private String getRawFrameData(char[] framesInfo, int frameNo) { - int nextFrame= 0; - int[] dbg_frame= new int[2]; - - while(nextFrame < framesInfo.length) { - dbg_frame[0] = PHPDBGBase.Char4ToInt(framesInfo, nextFrame); // frame name - dbg_frame[1] = PHPDBGBase.Char4ToInt(framesInfo, nextFrame + 4); // frame size - - nextFrame += 8; - if(dbg_frame[1] == 0) return ""; - - switch(dbg_frame[0]) { - case PHPDBGBase.FRAME_RAWDATA: - if(frameNo == PHPDBGBase.Char4ToInt(framesInfo, nextFrame)) { - int toRead= PHPDBGBase.Char4ToInt(framesInfo, nextFrame + 4); - return String.copyValueOf(framesInfo, nextFrame + 8, toRead); - } - break; - } - // go to next frame - nextFrame += dbg_frame[1]; - } - return ""; - } - - public PHPVariable[] getInstVars(PHPVariable phpVar) throws DebugException { - Vector vecVars= new Vector(); - PHPVariable localPHPVar; - int i=0; - - // already unserialized - for(i=0; i < DBGVars.size(); i++) { - localPHPVar= (PHPVariable)DBGVars.get(i); - if(localPHPVar.getParent() == phpVar) { - vecVars.add(localPHPVar); - } - } - PHPVariable[] arrVars= new PHPVariable[vecVars.size()]; - arrVars= (PHPVariable[]) vecVars.toArray(arrVars); - - return arrVars; - } - - private PHPVariable[] procVars(PHPStackFrame stack) throws DebugException { - Vector vecVars= new Vector(); - - // unserialize - finalPos= 0; - refCounter= 0; - doUnserialize(stack, vecVars, null); - - DBGVars= vecVars; - - return(getInstVars(null)); - } - - private String readValue(String serialVars) throws DebugException { - int startPos=0, endPos=0, lenStr=0, i=0, elements=0; - String ret= new String(""); - - switch(serialVars.charAt(0)) { - case 'a': // associative array, a:elements:{[index][value]...} - typeRead= "hash"; - startPos= 1; - endPos= serialVars.indexOf(':', startPos + 1); - if(endPos == -1) return ""; - finalPos += endPos + 2; - ret= new String(serialVars.substring(startPos + 1, endPos)); - - hasChildren= true; - break; - case 'O': // object, O:name_len:"name":elements:{[attribute][value]...} - typeRead= "object"; - - startPos= 1; - endPos= serialVars.indexOf(':', startPos + 1); - if(endPos == -1) return ""; - - // get object class - lenStr= Integer.parseInt(serialVars.substring(startPos + 1, endPos)); - startPos= endPos + 2; - endPos= lenStr + startPos; - className= new String(serialVars.substring(startPos, endPos).toString()); - - // get num of elements - startPos= endPos + 1; - endPos= serialVars.indexOf(':', startPos + 1); - if(endPos == -1) return ""; - finalPos += endPos + 2; - ret= new String(serialVars.substring(startPos + 1, endPos)); - - isObject= true; - hasChildren= true; - break; - case 's': // string, s:length:"data"; - typeRead= "string"; - startPos= 1; - endPos= serialVars.indexOf(':', startPos + 1); - if(endPos == -1) return ""; - - lenStr= Integer.parseInt(serialVars.substring(startPos + 1, endPos)); - startPos= endPos + 2; - endPos= lenStr + startPos; - ret= new String(serialVars.substring(startPos, endPos).toString()); - finalPos += endPos + 2; - break; - case 'i': // integer, i:123; - typeRead= "integer"; - startPos= 1; - endPos= serialVars.indexOf(';', startPos + 1); - if(endPos == -1) return ""; - - ret= new String(serialVars.substring(startPos + 1, endPos).toString()); - finalPos += endPos + 1; - break; - case 'd': // double (float), d:1.23; - typeRead= "double"; - startPos= 1; - endPos= serialVars.indexOf(';', startPos + 1); - if(endPos == -1) return ""; - - ret= new String(serialVars.substring(startPos + 1, endPos).toString()); - finalPos += endPos + 1; - break; - case 'N': // NULL, N; - typeRead= "null"; - ret= "nil"; - finalPos += 2; - break; - case 'b': // bool, b:0 or 1 - typeRead= "boolean"; - ret= (serialVars.charAt(2) == '1')?"true":"false"; - finalPos += endPos + 4; - break; - case 'z': // resource, z:typename_len:"typename":valres; - typeRead= "resource"; - - startPos= 1; - endPos= serialVars.indexOf(':', startPos + 1); - if(endPos == -1) return ""; - - // get resource type name - lenStr= Integer.parseInt(serialVars.substring(startPos + 1, endPos)); - startPos= endPos + 2; - endPos= lenStr + startPos; - className= new String(serialVars.substring(startPos, endPos).toString()); - - // get resource value - startPos= endPos + 1; - endPos= serialVars.indexOf(';', startPos + 1); - if(endPos == -1) return ""; - ret= new String(serialVars.substring(startPos + 1, endPos)); - finalPos += endPos + 1; - break; - case 'r': - case 'R': - typeRead= "reference"; - startPos= 1; - endPos= serialVars.indexOf(';', startPos + 1); - if(endPos == -1) return "0"; - - ret= new String(serialVars.substring(startPos + 1, endPos)); - finalPos += endPos + 1; - isRef= true; - break; - case ';': - typeRead= "unknown"; - finalPos+= 1; - break; - case '?': - finalPos+= 1; - default: - finalPos+= 1; - typeRead= "unknown"; - break; - } - return ret; - } - - private void doUnserialize(PHPStackFrame stack, Vector vecVars, PHPVariable parent) throws DebugException { - int i, elements= 0; - PHPVariable newVar= null; - String value= new String(""); - String name= new String(""); - String tmp= new String(""); - String[] tmpSplit; - - if(finalPos > serGlobals.length() || serGlobals.equals("") || serGlobals.substring(finalPos).equals("")) return; - - isRef= false; - hasChildren= false; - isObject= false; - name= readValue(serGlobals.substring(finalPos)); - - if(hasChildren) { - // main array - if(refCounter == 0) { - value= name; - name= ""; - } - } else { - hasChildren= false; - isRef= false; - value= readValue(serGlobals.substring(finalPos)); - // replaceAll doesn't work, why??? - tmpSplit= value.split("\\\\"); - value= ""; - for(i= 0; i < tmpSplit.length; i++) { - value= value + tmpSplit[i]; - if(!tmpSplit[i].equals("")) { - if(i < (tmpSplit.length - 1)) { - value= value + "\\"; - } - } - } - } - - if(!name.equals("")) { - if(isRef) { - PHPVariable varPHP; - for(i=0; i < vecVars.size(); i++) { - varPHP= (PHPVariable) vecVars.get(i); - if(varPHP.getObjectId().equals(value)) { - newVar= new PHPVariable(stack, name, "local", true, (PHPValue)varPHP.getValue()); - break; - } - } - if(newVar == null) { - newVar= new PHPVariable(stack, name, "local", false, null); - } - } else { - refCounter++; - newVar= new PHPVariable(stack, name, "local", value, typeRead, hasChildren, Integer.toString(refCounter), className); - } - newVar.setParent(parent); - vecVars.add(newVar); - } - if(hasChildren) { - elements= Integer.parseInt(value); - for(i=0; i < elements; i++) - doUnserialize(stack, vecVars, newVar); - - // skip "}" - finalPos += 1; - } - } - - public int readResponse() throws IOException { - int bytesToRead=0, nextFrame=0, i=0, cmdReceived=0, stackIndex=0; - char[] dbg_header_struct_read= new char[16]; - int[] dbg_header_struct= new int[4]; - int[] dbg_bpl_tmp= new int[10]; - int[] dbg_frame= new int[2]; - int[] dbg_eval_tmp= new int[3]; - int[] dbg_src_tree_tmp= new int[4]; - Vector rawList= new Vector(); - Vector stackList= new Vector(); - PHPStackFrame[] newStackList; - - rawList.clear(); - stackList.clear(); - // Read from input - while(readInput(dbg_header_struct_read, 16) != 0) { - dbg_header_struct[0] = PHPDBGBase.Char4ToInt(dbg_header_struct_read, 0); - dbg_header_struct[1] = PHPDBGBase.Char4ToInt(dbg_header_struct_read, 4); - dbg_header_struct[2] = PHPDBGBase.Char4ToInt(dbg_header_struct_read, 8); - dbg_header_struct[3] = PHPDBGBase.Char4ToInt(dbg_header_struct_read, 12); - - // Check DBG sync bytes - if(dbg_header_struct[0] != 0x5953) return 0; - - cmdReceived= dbg_header_struct[1]; - setLastCmd(cmdReceived); - bytesToRead= dbg_header_struct[3]; - - //System.out.println("Response Received: " + cmdReceived); - char[] entirePack= new char[bytesToRead]; - - if(bytesToRead > 0) { - if(readInput(entirePack, bytesToRead) < bytesToRead) return 0; - } - - // First process frames - nextFrame= 0; - while(nextFrame < bytesToRead) { - dbg_frame[0] = PHPDBGBase.Char4ToInt(entirePack, nextFrame); // frame name - dbg_frame[1] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 4); // frame size - nextFrame += 8; - if(dbg_frame[1] == 0) return 0; - switch(dbg_frame[0]) { - case PHPDBGBase.FRAME_STACK: - int[] dbg_stack_new= new int[4]; - dbg_stack_new[0] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 0); // line no - dbg_stack_new[1] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 4); // mod no - dbg_stack_new[2] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 8); // scope id - dbg_stack_new[3] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 12); // id of description string - - stackIndex++; - if(dbg_stack_new[1] != 0) { - PHPStackFrame newStack= new PHPStackFrame(null, getModByNo(dbg_stack_new[1]), dbg_stack_new[0], stackIndex, getRawFrameData(entirePack, dbg_stack_new[3]), dbg_stack_new[1]); - stackList.add(newStack); - } - break; - case PHPDBGBase.FRAME_SOURCE: - break; - case PHPDBGBase.FRAME_SRC_TREE: - dbg_src_tree_tmp[0] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 0); // parent_mod_no - dbg_src_tree_tmp[1] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 4); // parent_line_no /* NOT USED */ - dbg_src_tree_tmp[2] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 8); // mod_no - dbg_src_tree_tmp[3] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 12); // imod_name - - if(getModByNo(dbg_src_tree_tmp[2]).equals("")) { - String fileName= new String(getRawFrameData(entirePack, dbg_src_tree_tmp[3])); - // Remove '\0' char - if(fileName.length() > 0) fileName= fileName.substring(0, fileName.length() - 1); - - if(dbg_src_tree_tmp[2] != 0) { - PHPDBGMod modNew= new PHPDBGMod(dbg_src_tree_tmp[2], fileName); - DBGMods.add(modNew); - } - } - break; - case PHPDBGBase.FRAME_RAWDATA: - break; - case PHPDBGBase.FRAME_ERROR: - break; - case PHPDBGBase.FRAME_EVAL: - String evalString= new String(""); - dbg_eval_tmp[0] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 0); // istr - dbg_eval_tmp[1] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 4); // iresult - dbg_eval_tmp[2] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 8); // ierror - - evalRet= getRawFrameData(entirePack, dbg_eval_tmp[1]); - evalString= getRawFrameData(entirePack, dbg_eval_tmp[0]); - serGlobals= evalRet; - break; - case PHPDBGBase.FRAME_BPS: - break; - case PHPDBGBase.FRAME_BPL: - int[] dbg_bpl_new= new int[10]; - dbg_bpl_new[0] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 0); - dbg_bpl_new[1] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 4); - dbg_bpl_new[2] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 8); - dbg_bpl_new[3] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 12); - dbg_bpl_new[4] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 16); - dbg_bpl_new[5] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 20); - dbg_bpl_new[6] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 24); - dbg_bpl_new[7] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 28); - dbg_bpl_new[8] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 32); - dbg_bpl_new[9] = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 36); - - // look if breakpoint already exists in vector - for(i=0; i < DBGBPList.size(); i++) { - dbg_bpl_tmp= (int[]) DBGBPList.get(i); - if(dbg_bpl_tmp[8] == dbg_bpl_new[8]) { - DBGBPList.remove(i); - break; - } - } - - // add breakpoint to vector - DBGBPList.add(dbg_bpl_new); - copyToLastBP(dbg_bpl_new); - - // mod no returned? - if(getModByNo(dbg_bpl_new[0]).equals("")) { - String fileName= new String(getRawFrameData(entirePack, dbg_bpl_new[2])); - // Remove '\0' char - if(fileName.length() > 0) fileName= fileName.substring(0, fileName.length() - 1); - if(dbg_bpl_new[0] != 0) { - PHPDBGMod modNew= new PHPDBGMod(dbg_bpl_new[0], fileName); - DBGMods.add(modNew); - } - } - break; - case PHPDBGBase.FRAME_VER: - break; - case PHPDBGBase.FRAME_SID: - sid = PHPDBGBase.Char4ToInt(entirePack, nextFrame + 0); - break; - case PHPDBGBase.FRAME_SRCLINESINFO: - break; - case PHPDBGBase.FRAME_SRCCTXINFO: - break; - case PHPDBGBase.FRAME_LOG: - break; - case PHPDBGBase.FRAME_PROF: - break; - case PHPDBGBase.FRAME_PROF_C: - break; - case PHPDBGBase.FRAME_SET_OPT: - break; - } - // go to next frame - nextFrame += dbg_frame[1]; - } - - // Now process command - switch(cmdReceived) { - case PHPDBGBase.DBGC_REPLY: - break; - case PHPDBGBase.DBGC_STARTUP: - break; - case PHPDBGBase.DBGC_END: - sessionEnded= true; - break; - case PHPDBGBase.DBGC_BREAKPOINT: - newStackList= new PHPStackFrame[stackList.size()]; - newStackList= (PHPStackFrame[]) stackList.toArray(newStackList); - DBGStackList= newStackList; - BPUnderHit= getBPUnderHit(); - break; - case PHPDBGBase.DBGC_STEPINTO_DONE: - case PHPDBGBase.DBGC_STEPOVER_DONE: - case PHPDBGBase.DBGC_STEPOUT_DONE: - case PHPDBGBase.DBGC_EMBEDDED_BREAK: - BPUnderHit= 1; - newStackList= new PHPStackFrame[stackList.size()]; - newStackList= (PHPStackFrame[]) stackList.toArray(newStackList); - DBGStackList= newStackList; - break; - case PHPDBGBase.DBGC_ERROR: - newStackList= new PHPStackFrame[stackList.size()]; - newStackList= (PHPStackFrame[]) stackList.toArray(newStackList); - DBGStackList= newStackList; - break; - case PHPDBGBase.DBGC_LOG: - break; - case PHPDBGBase.DBGC_SID: - break; - case PHPDBGBase.DBGC_PAUSE: - break; - } - } - - return cmdReceived; - } - - public PHPStackFrame[] getStackList() { - return DBGStackList; - } - - private int readInput(char[] buffer, int bytes) throws IOException { - int bytesRead= 0; - - for(int i=0; i < bytes; i++) { - if(in.ready()) { - buffer[i]= (char) (in.read() & 0x00FF); - bytesRead++; - } - else - break; - } - return bytesRead; - } - - public void setShouldStop() { - this.shouldStop= true; - } - - public boolean waitResponse(long milliseconds) throws IOException { - long timeout= System.currentTimeMillis() + milliseconds; - while(System.currentTimeMillis() < timeout) { - if(in.ready() || shouldStop) { - break; - } - } - return in.ready(); - } -} \ No newline at end of file diff --git a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/.#PHPDBGProxy.java.1.3 b/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/.#PHPDBGProxy.java.1.3 deleted file mode 100644 index dd3b8f6..0000000 --- a/net.sourceforge.phpeclipse.debug.core/src/net/sourceforge/phpdt/internal/debug/core/.#PHPDBGProxy.java.1.3 +++ /dev/null @@ -1,433 +0,0 @@ -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html - -Contributors: - IBM Corporation - Initial implementation - Vicente Fernando - www.alfersoft.com.ar - Christian Perkonig - remote debug -**********************************************************************/ -package net.sourceforge.phpdt.internal.debug.core; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.Socket; -import java.net.ServerSocket; -import java.net.SocketTimeoutException; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.debug.core.DebugPlugin; -import org.eclipse.debug.core.DebugException; -import org.eclipse.debug.core.model.IBreakpoint; -import net.sourceforge.phpdt.internal.debug.core.model.IPHPDebugTarget; -import net.sourceforge.phpdt.internal.debug.core.model.PHPStackFrame; -import net.sourceforge.phpdt.internal.debug.core.model.PHPThread; -import net.sourceforge.phpdt.internal.debug.core.model.PHPVariable; -import net.sourceforge.phpdt.internal.debug.core.breakpoints.PHPLineBreakpoint; - -public class PHPDBGProxy { - - private ServerSocket server= null; - private Socket socket; - private BufferedReader reader= null; - private PHPDBGInterface DBGInt= null; - private IPHPDebugTarget debugTarget= null; - private PHPLoop phpLoop; - private PHPThread PHPMainThread; - private PHPDBGProxy thisProxy= null; - private int port; - private boolean remote; - private IPath remoteSourcePath; - - public PHPDBGProxy() { - thisProxy= this; - } - - public PHPDBGProxy(boolean remote,String remoteSourcePath) { - thisProxy= this; - this.remote=remote; - this.remoteSourcePath= new Path(remoteSourcePath); - } - - public void start() { - createServerSocket(); - this.startPHPLoop(); - } - - public void stop() { - phpLoop.setShouldStop(); - if(DBGInt != null) DBGInt.setShouldStop(); - phpLoop.notifyWait(); - } - - protected ServerSocket getServerSocket() throws IOException { - if (server == null) { - createServerSocket(); - } - return server; - } - - protected void createServerSocket() { -// port = SocketUtil.findUnusedLocalPort("localhost", 10001, 10101); - port = 10001; - if (port == -1) { - PHPDebugCorePlugin.log(5, "Cannot find free port!!!!"); - return; - } - try { - if (server == null) { - server = new ServerSocket(port); - //System.out.println("ServerSocket on port: " + port); - } - } catch (IOException e) { - // IO Error - PHPDebugCorePlugin.log(e); - stop(); - } - } - - public Socket getSocket() throws IOException { - return socket; - } - - protected void setDBGInterface(PHPDBGInterface DBGInt) { - this.DBGInt= DBGInt; - } - - public BufferedReader getReader() throws IOException { - if (reader == null) { - reader = new BufferedReader(new InputStreamReader(this.getSocket().getInputStream(), "ISO8859_1")); - } - return reader; - } - - public BufferedReader getReader(Socket socket) throws IOException { - if (socket != null) - return new BufferedReader(new InputStreamReader(socket.getInputStream(), "ISO8859_1")); - else - return null; - } - - public OutputStream getOutputStream() throws IOException { - return this.getSocket().getOutputStream(); - } - - protected void setBreakPoints() throws IOException, CoreException { - IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager().getBreakpoints(); - for (int i = 0; i < breakpoints.length; i++) { - addBreakpoint(breakpoints[i]); - } - } - - public void addBreakpoint(IBreakpoint breakpoint) { - if (DBGInt == null) return; - int bpNo= 0; - try { - PHPLineBreakpoint phpLBP; - if(breakpoint.getModelIdentifier() == PHPDebugCorePlugin.getDefault().getDescriptor().getUniqueIdentifier()) { - IPath filename; - phpLBP= (PHPLineBreakpoint)breakpoint; - // bpNo= DBGInt.addBreakpoint(phpLBP.getMarker().getResource().getLocation().toOSString(), phpLBP.getLineNumber()); - if (remote) - filename=remoteSourcePath.append(phpLBP.getMarker().getResource().getProjectRelativePath()); - else - filename=phpLBP.getMarker().getResource().getLocation(); - bpNo= DBGInt.addBreakpoint(filename.toOSString(), phpLBP.getLineNumber()); - phpLBP.setDBGBpNo(bpNo); - } - } catch (IOException e) { - PHPDebugCorePlugin.log(e); - stop(); - } catch (CoreException e) { - PHPDebugCorePlugin.log(e); - stop(); - } - } - - public void removeBreakpoint(IBreakpoint breakpoint) { - if (DBGInt == null) return; - try { - PHPLineBreakpoint phpLBP; - if(breakpoint.getModelIdentifier() == PHPDebugCorePlugin.getDefault().getDescriptor().getUniqueIdentifier()) { - phpLBP= (PHPLineBreakpoint)breakpoint; - IPath filename; - if (remote) - filename=remoteSourcePath.append(phpLBP.getMarker().getResource().getProjectRelativePath()); - else - filename=phpLBP.getMarker().getResource().getLocation(); -// bpNo= DBGInt.addBreakpoint(filename.toOSString(), phpLBP.getLineNumber()); - DBGInt.removeBreakpoint(filename.toOSString(), phpLBP.getLineNumber(), phpLBP.getDBGBpNo()); - } - } catch (IOException e) { - PHPDebugCorePlugin.log(e); - stop(); - } catch (CoreException e) { - PHPDebugCorePlugin.log(e); - stop(); - } - } - - public void startPHPLoop() { - phpLoop = new PHPLoop(); - phpLoop.start(); - } - - public void resume(PHPThread thread) { - try { - DBGInt.continueExecution(); - phpLoop.notifyWait(); - } catch (IOException e) { - PHPDebugCorePlugin.log(e); - stop(); - } - } - - protected IPHPDebugTarget getDebugTarget() { - return debugTarget; - } - - public void setDebugTarget(IPHPDebugTarget debugTarget) { - this.debugTarget = debugTarget; - debugTarget.setPHPDBGProxy(this); - } - - public PHPVariable[] readVariables(PHPStackFrame frame) { - try { - return DBGInt.getVariables(frame); - } catch (IOException ioex) { - ioex.printStackTrace(); - throw new RuntimeException(ioex.getMessage()); - } catch (DebugException ex) { - ex.printStackTrace(); - throw new RuntimeException(ex.getMessage()); - } - } - - public PHPVariable[] readInstanceVariables(PHPVariable variable) { - try { - return DBGInt.getInstVars(variable); - } catch (DebugException ex) { - ex.printStackTrace(); - throw new RuntimeException(ex.getMessage()); - } - - } - - public void readStepOverEnd(PHPStackFrame stackFrame) { - try { - DBGInt.stepOver(); - phpLoop.notifyWait(); - } catch (Exception e) { - PHPDebugCorePlugin.log(e); - } - } - - public void readStepReturnEnd(PHPStackFrame stackFrame) { - try { - DBGInt.stepOut(); - phpLoop.notifyWait(); - } catch (Exception e) { - PHPDebugCorePlugin.log(e); - } - } - - public void readStepIntoEnd(PHPStackFrame stackFrame) { - try { - DBGInt.stepInto(); - phpLoop.notifyWait(); - } catch (Exception e) { - PHPDebugCorePlugin.log(e); - } - } - -/* - public PHPStackFrame[] readFrames(PHPThread thread) { - //try { - //this.println("th " + thread.getId() + " ; f "); - //return new FramesReader(getMultiReaderStrategy()).readFrames(thread); - return null; - //} catch (IOException e) { - // PHPDebugCorePlugin.log(e); - // return null; - //} - - } -*/ - - public void closeSocket() throws IOException { - if (socket != null) { - socket.close(); - } - } - - public void closeServerSocket() throws IOException { - if (server != null) { - server.close(); - } - } - - public int getPort() { - return port; - } - - class PHPLoop extends Thread { - private boolean shouldStop; - - public PHPLoop() { - shouldStop = false; - this.setName("PHPDebuggerLoop"); - } - - public synchronized void setShouldStop() { - shouldStop = true; - } - - public synchronized void notifyWait() { - notify(); - } - - public void run() { - try { - char[] buf= new char[16]; - int i, pos, timeout; - long interval= 200; // 200ms - String line; - PHPStackFrame[] StackList; - boolean endFile=false; - boolean newconnect=false; - Socket newSocket=null; - PHPDBGInterface newDBGInt; - int sid=-1; - - PHPMainThread = new PHPThread(getDebugTarget(), getPort()); - PHPMainThread.setName("Thread [main]"); - timeout = 0; - while ((getDebugTarget() == null) && (timeout < 100)) { - sleep(100); - timeout++; - } - // Be sure debug target is set - PHPMainThread.setDebugTarget(getDebugTarget()); - getDebugTarget().addThread(PHPMainThread); - - //System.out.println("Waiting for breakpoints."); - while (!shouldStop) - { - newconnect=true; - try { - newSocket = server.accept(); - //System.out.println("Accepted! : " + socket.toString()); - } catch (SocketTimeoutException e) { - // no one wants to connect - newconnect=false; - } catch (IOException e) { - PHPDebugCorePlugin.log(e); - return; - } - - if (newconnect) - { - if (DBGInt==null) - server.setSoTimeout(1); - newDBGInt= new PHPDBGInterface(getReader(newSocket), newSocket.getOutputStream(), thisProxy); - newDBGInt.waitResponse(1000); - newDBGInt.flushAllPackets(); - // Check version and session ID - if ((DBGInt==null) || (DBGInt.getSID()==newDBGInt.getSID())) - { - DBGInt=newDBGInt; - try { - closeSocket(); - } catch (IOException e) { - PHPDebugCorePlugin.log(e); - shouldStop=true; - } - socket=newSocket; - setBreakPoints(); - DBGInt.continueExecution(); - } else - { - newDBGInt.continueExecution(); - newSocket.close(); - } - } - - if(DBGInt.waitResponse(interval)) - { - - DBGInt.flushAllPackets(); - - if (DBGInt.BPUnderHit != 0) { - StackList = DBGInt.getStackList(); - if (StackList.length > 0) { - for (i = 0; i < StackList.length; i++) { - StackList[i].setThread(PHPMainThread); - if (DBGInt.getModByNo(StackList[i].getModNo()).equals("")) { - DBGInt.getSourceTree(); - } - StackList[i].setFile( - DBGInt.getModByNo(StackList[i].getModNo())); - } - PHPMainThread.setStackFrames(StackList); - } - // Fire debug event - PHPMainThread.suspend(); - - synchronized (this) { - wait(); - } - } - } - if (remote) { - if (PHPMainThread.isTerminated()) - { - shouldStop=true; - break; - } - } else { - if (PHPMainThread.isTerminated() || getDebugTarget().getProcess().isTerminated()) - { - shouldStop=true; - break; - } - } -// if (DBGInt.getLastCmd()==PHPDBGBase.DBGC_LOG) -// endFile=true; -// } -// try -// { -// closeSocket(); -// } -// catch (IOException e) { -// PHPDebugCorePlugin.log(e); -// shouldStop=true; -// } -// endFile=false; - } - } - catch (Exception ex) { - PHPDebugCorePlugin.log(ex); - System.out.println(ex); - } - finally { - try { - getDebugTarget().terminate(); - closeSocket(); - closeServerSocket(); - } - catch (IOException e) { - PHPDebugCorePlugin.log(e); - return; - } - //System.out.println("Socket loop finished."); - } - } - } -}