// Constants
// php-engine commands/events
- public static final int DBGC_REPLY = 0x0000; /* reply to previous DBGA_REQUEST request */
- public static final int DBGC_STARTUP = 0x0001; /* script startup */
- public static final int DBGC_END = 0x0002; /* script done */
- public static final int DBGC_BREAKPOINT = 0x0003; /* user definded breakpoint occured */
- public static final int DBGC_STEPINTO_DONE = 0x0004; /* step to the next statement is completed */
- public static final int DBGC_STEPOVER_DONE = 0x0005; /* step to the next statement is completed */
- public static final int DBGC_STEPOUT_DONE = 0x0006; /* step to the next statement is completed */
- public static final int DBGC_EMBEDDED_BREAK = 0x0007; /* breakpoint caused by DebugBreak() function */
- public static final int DBGC_ERROR = 0x0010; /* error occured */
- public static final int DBGC_LOG = 0x0011; /* logging support */
- public static final int DBGC_SID = 0x0012; /* send SID */
- public static final int DBGC_PAUSE = 0x0013; /* pause current session as soon as possible */
-
- public static final char[] DBGA_CONTINUE = IntToChar4(0x8001); /* php should continue run */
+ public static final int DBGC_REPLY = 0x0000; // reply to previous DBGA_REQUEST request
+ public static final int DBGC_STARTUP = 0x0001; // script startup
+ public static final int DBGC_END = 0x0002; // script done
+ public static final int DBGC_BREAKPOINT = 0x0003; // user definded breakpoint occured
+ public static final int DBGC_STEPINTO_DONE = 0x0004; // step to the next statement is completed
+ public static final int DBGC_STEPOVER_DONE = 0x0005; // step to the next statement is completed
+ public static final int DBGC_STEPOUT_DONE = 0x0006; // step to the next statement is completed
+ public static final int DBGC_EMBEDDED_BREAK = 0x0007; // breakpoint caused by DebugBreak() function
+ public static final int DBGC_ERROR = 0x0010; // error occured
+ public static final int DBGC_LOG = 0x0011; // logging support
+ public static final int DBGC_SID = 0x0012; // send SID
+ public static final int DBGC_PAUSE = 0x0013; // pause current session as soon as possible
+
+ public static final char[] DBGA_CONTINUE = IntToChar4(0x8001); // php should continue run
public static final char[] DBGA_STOP = IntToChar4(0x8002);
public static final char[] DBGA_STEPINTO = IntToChar4(0x8003);
public static final char[] DBGA_STEPOVER = IntToChar4(0x8004);
- public static final char[] DBGA_STEPOUT = IntToChar4(0x8005);
- public static final char[] DBGA_IGNORE = IntToChar4(0x8006);
- public static final char[] DBGA_REQUEST = IntToChar4(0x8010); /* debugger client requests some information from PHP engine */
-
- public static final int FRAME_STACK = 100000; /* "call:stack" - e.g. backtrace */
- public static final int FRAME_SOURCE = 100100; /* source text */
- public static final int FRAME_SRC_TREE = 100200; /* tree of source files */
- public static final int FRAME_RAWDATA = 100300; /* raw data or string */
- public static final int FRAME_ERROR = 100400; /* error notification */
- public static final int FRAME_EVAL = 100500; /* evaluating/watching */
- public static final int FRAME_BPS = 100600; /* set/remove breakpoint */
- public static final int FRAME_BPL = 100700; /* breakpoint(s) request = get the list */
- public static final int FRAME_VER = 100800; /* version request */
- public static final int FRAME_SID = 100900; /* session id info*/
- public static final int FRAME_SRCLINESINFO = 101000; /* source lines info */
- public static final int FRAME_SRCCTXINFO = 101100; /* source contexts info */
- public static final int FRAME_LOG = 101200; /* logging */
- public static final int FRAME_PROF = 101300; /* profiler */
- public static final int FRAME_PROF_C = 101400; /* profiler counter/accuracy */
- public static final int FRAME_SET_OPT = 101500; /* set/update options */
-
- public static final char[] DBGSYNC = { 0, 0, (char) 89, (char) 83}; /* DBG syncronization chars */
+ public static final char[] DBGA_STEPOUT = IntToChar4(0x8005);
+ public static final char[] DBGA_IGNORE = IntToChar4(0x8006);
+ public static final char[] DBGA_REQUEST = IntToChar4(0x8010); // debugger client requests some information from PHP engine
+
+ public static final int FRAME_STACK = 100000; // "call:stack" - e.g. backtrace
+ public static final int FRAME_SOURCE = 100100; // source text
+ public static final int FRAME_SRC_TREE = 100200; // tree of source files
+ public static final int FRAME_RAWDATA = 100300; // raw data or string
+ public static final int FRAME_ERROR = 100400; // error notification
+ public static final int FRAME_EVAL = 100500; // evaluating/watching
+ public static final int FRAME_BPS = 100600; // set/remove breakpoint
+ public static final int FRAME_BPL = 100700; // breakpoint(s) request = get the list
+ public static final int FRAME_VER = 100800; // version request
+ public static final int FRAME_SID = 100900; // session id info
+ public static final int FRAME_SRCLINESINFO = 101000; // source lines info
+ public static final int FRAME_SRCCTXINFO = 101100; // source contexts info
+ public static final int FRAME_LOG = 101200; // logging
+ public static final int FRAME_PROF = 101300; // profiler
+ public static final int FRAME_PROF_C = 101400; // profiler counter/accuracy
+ public static final int FRAME_SET_OPT = 101500; // set/update options
+
+ public static final int CURLOC_SCOPE_ID = 1; // nested locations are 2,3... and so on in backward order,
+ // so 2 represents most out-standing stack context
+ public static final int GLOBAL_SCOPE_ID = -1; // it is global context, not stacked
+
+ public static final char[] DBGSYNC = { 0, 0, (char) 89, (char) 83 }; // DBG syncronization chars
// Session Types
- public static final int DBG_COMPAT = 0x0001;
- public static final int DBG_JIT = 0x0002;
- public static final int DBG_REQ = 0x0003;
- public static final int DBG_EMB = 0x0004;
-
- public static final int BPS_DELETED = 0;
- public static final int BPS_DISABLED = 1;
- public static final int BPS_ENABLED = 2;
- public static final int BPS_UNRESOLVED = 0x100;
+ public static final int DBG_COMPAT = 0x0001;
+ public static final int DBG_JIT = 0x0002;
+ public static final int DBG_REQ = 0x0003;
+ public static final int DBG_EMB = 0x0004;
+
+ public static final int BPS_DELETED = 0;
+ public static final int BPS_DISABLED = 1;
+ public static final int BPS_ENABLED = 2;
+ public static final int BPS_UNRESOLVED = 0x100;
public static final int E_ERROR = (1<<0L);
- public static final int E_WARNING = (1<<1L);
+ public static final int E_WARNING = (1<<1L);
public static final int E_PARSE = (1<<2L);
- public static final int E_NOTICE = (1<<3L);
- public static final int E_CORE_ERROR = (1<<4L);
+ public static final int E_NOTICE = (1<<3L);
+ public static final int E_CORE_ERROR = (1<<4L);
public static final int E_CORE_WARNING = (1<<5L);
public static final int E_COMPILE_ERROR = (1<<6L);
- public static final int E_COMPILE_WARNING = (1<<7L);
- public static final int E_USER_ERROR = (1<<8L);
+ public static final int E_COMPILE_WARNING = (1<<7L);
+ public static final int E_USER_ERROR = (1<<8L);
public static final int E_USER_WARNING = (1<<9L);
- public static final int E_USER_NOTICE = (1<<10L);
+ public static final int E_USER_NOTICE = (1<<10L);
public PHPDBGBase() {
}
- public static void copyCharsTo(char[] to, char[] from, int bytes, int tostart) {
+
+ /**
+ * Copies the number of bytes from a source buffer to a destination buffer
+ * Destination index starts with 0 + tostart,
+ * and source index starts with 0.
+ *
+ * @param to The destination buffer.
+ * @param from The source buffer.
+ * @param bytes The number of bytes which are to copy.
+ * @param tostart The start index for the destination buffer.
+ */
+ public static void copyCharsTo (char[] to, char[] from, int bytes, int tostart) {
int i;
- for(i=0; i < bytes; i++) to[i + tostart]= from[i];
+
+ for (i = 0; i < bytes; i++) { // For the number of bytes which are to copy
+ to[i + tostart] = from[i]; // Copy from destination to source (+startindex)
+ }
}
- public static void copyChars(char[] to, char[] from, int bytes) {
- copyCharsTo(to, from, bytes, 0);
+ /**
+ * Copies the number of bytes from a source buffer to a destination buffer
+ * Destination index starts with 0,
+ * and source index starts with 0.
+ *
+ * @param to The destination buffer.
+ * @param from The source buffer.
+ * @param bytes The number of bytes which are to copy.
+ */
+ public static void copyChars (char[] to, char[] from, int bytes) {
+ copyCharsTo (to, from, bytes, 0);
}
- public static int Char4ToInt(char[] ch, int startPos) {
- int pos=startPos, ret=0;
-
- ret += CharToInt(ch[pos++]) << 24;
- ret += CharToInt(ch[pos++]) << 16;
- ret += CharToInt(ch[pos++]) << 8;
- ret += CharToInt(ch[pos++]) << 0;
+ /**
+ * Converts a four chars big endian value into
+ * an integer value
+ *
+ * @param ch The buffer which contains the four chars which are to convert.
+ * @param startPos The start position (of the four bytes) within the buffer.
+ */
+ public static int Char4ToInt (char[] ch, int startPos) {
+ int pos = startPos;
+ int ret = 0;
+
+ ret += CharToInt (ch[pos++]) << 24;
+ ret += CharToInt (ch[pos++]) << 16;
+ ret += CharToInt (ch[pos++]) << 8;
+ ret += CharToInt (ch[pos++]) << 0;
+
return ret;
}
- public static int CharToInt(char ch) {
+ /**
+ * @return The character which is converted to an integer value.
+ */
+ public static int CharToInt (char ch) {
return (int) (ch & 0x00FF);
}
- public static char[] IntToChar4(int num) {
- char[] ret= new char[4];
-
+ /**
+ * Converts an integer value into a four char big endian number
+ *
+ * @param num The integer value which is to convert to a four char big endian number.
+ * @return The four byte buffer with the big endian number.
+ */
+ public static char[] IntToChar4 (int num) {
+ char[] ret = new char[4];
+
ret[0] = (char) ((num >> 24) & 0x00FF);
ret[1] = (char) ((num >> 16) & 0x00FF);
- ret[2] = (char) ((num >> 8) & 0x00FF);
- ret[3] = (char) ((num >> 0) & 0x00FF);
+ ret[2] = (char) ((num >> 8) & 0x00FF);
+ ret[3] = (char) ((num >> 0) & 0x00FF);
return ret;
}
- public static String CharArrayToString(char[] cha) {
- String ret= new String();
- int i, p;
-
- for(i=0; i < cha.length; i++) {
- p= (int) cha[i];
- ret= ret + "(" + String.valueOf(p) + ") ";
+ /**
+ * Converts the chars of an array into a string in form of
+ * (byte value string) (byte value string) (byte value string) ...
+ *
+ * @param cha The input buffer which contains the chars which are to convert.
+ * @return The string which contains the bytes as strings.
+ * E.g.: (123) (11) (46) (213) ...
+ */
+ public static String CharArrayToString (char[] cha) {
+ String ret = new String ();
+ int i;
+ int p;
+
+ for (i = 0; i < cha.length; i++) { // For all bytes within the input buffer
+ p = (int) cha[i]; // Convert the byte into an integer value
+ ret = ret + "(" + String.valueOf (p) + ") "; // Add the value
}
+
return ret;
}
-
- public static byte[] CharArrayToByteArray(char[] cha) {
- byte[] ret= new byte[cha.length];
- int i;
-
- for(i=0; i < cha.length; i++) {
- ret[i]= (byte) cha[i];
+
+ /**
+ *
+ * @param cha The input buffer which contains the chars which are to convert.
+ * @return The byte array which contains the converted chars.
+ */
+ public static byte[] CharArrayToByteArray (char[] cha) {
+ byte[] ret = new byte[cha.length]; // The resulting byte array
+ int i; // The index for the buffers
+
+ for (i = 0; i < cha.length; i++) { // For all chars within the input buffer
+ ret[i] = (byte) cha[i]; // Convert the character to a byte and store to buffer
}
- return ret;
+
+ return ret; // Return the byte array
}
}