diff options
Diffstat (limited to 'sapi/phpdbg/xml.md')
-rw-r--r-- | sapi/phpdbg/xml.md | 759 |
1 files changed, 0 insertions, 759 deletions
diff --git a/sapi/phpdbg/xml.md b/sapi/phpdbg/xml.md deleted file mode 100644 index b1203eab6f..0000000000 --- a/sapi/phpdbg/xml.md +++ /dev/null @@ -1,759 +0,0 @@ -phpdbg XML format -================= - -Common attributes -================= - -severity --------- - -- indicates the genre of phpdbg system output -- usually one of these values: - - normal - - notice - - error - -msgout ------- - -- text message output related to the xml data (e.g. <intro severity="normal" help="help" msgout="To get help using phpdbg type &quot;help&quot; and press enter" />) - -req ---- - -- the request id, if one was passed to the last command (via -r %d, where %d is the id) (and the output is related to that message) - -file ----- - -- refers to a filename - -method ------- - -- format classname::methodname -- refers to a method - -function --------- - -- refers to a function - -symbol ------- - -- either function or method (is method if "::" are present) - -opline ------- - -- in hexadecimal format -- refers to a specific pointer to a (zend_)op - -opcode ------- - -- refers to an opcode (ZEND_*) - -type ----- - -- general attribute for most errors, describes the genre of the error - - -General tags -============ - -intro ------ - -- appears on startup if -q flag wasn't provided as command line arg -- before any input possibility -- attributes may be spread over multiple tags -- wrapped in <intros> tag - -### attributes ### - -- version: current phpdbg version (as string) -- help: command name for help -- report: URL for bug reporting - -prompt ------- - -- msg tag contains the text prompt -- indicates that a new command may be accepted - -phpdbg ------- - -- general text message output from phpdbg system - -stream ------- - -- any output by PHP itself (e.g. <stream type="stdout">test</stream>) - -### attributes ### - -- type: stderr or stdout - -php ---- - -- php error output - -### attributes ### - -- msg: the error message - - -General error tags -================== - -command -------- - -- general errors about commands - -### possible attributes ### - -- type - - toomanyargs: more arguments than allowed - - noarg: argument missing - - wrongarg: wrong type of argument (e.g. letters instead of integer) - - toofewargs: not enough arguments - - notfound: command (or subcommand) doesn't exist - - ambiguous: command was ambiguous - - invalidcommand: command input is totally invalid - - (nostack: should not happen: is an internal error) - - (emptystack: should not happen: is an internal error) -- command: passed command -- subcommand: passed subcommand (present if the error is related to the subcommand) -- expected: count of expected arguments -- got: type of argument for type "wrongarg" -- num: if possible, information about which parameter had a wrong argument - -inactive --------- - -- by type - - op_array: nothing was yet compiled (probably because no execution context set) - - symbol_table: no symbol table present (not yet initiailized or already destructed) - - noexec: not in execution - - memory_manager: using the native memory manager (malloc, free, realloc) instead of e.g. the Zend MM - - notfound: file not found - - nocontext: execution context was not set (or compilation had failed) - - isrunning: command requires no running script - - -Commands -======== - -export ------- - -- tag: <exportbreakpoint /> -- usually triggered by successful export command -- may appear when cleaning to temporary store breakpoints -- errors by type - - openfailure: could not create file - -### attributes ### - -- count: number of exported breakpoints - -break / info break ------------------- - -- General tag for breakpoint creation, deletion and hits is "<breakpoint />" - -### possible attributes ### - -- id: the breakpoint id (if the leave command was executed, the id has the value "leave") -- num: the nth opline of a function/method/file -- add: has value "success"/"fail": a brekpoint was successfully/not added -- pending: the breakpoint is waiting for resolving (e.g. a file opline on a not yet loaded file) -- deleted: has value "success"/"fail": a breakpoint was successfully/not deleted -- eval: the condition on conditional breakpoints -- file -- opline -- opcode -- symbol -- function -- method -- line - - -- listing breakpoints always in a container element "<breakpoints>" - - Child nodes: - - function - - method - - file - - opline - - methodopline - - functionopline - - fileopline - - evalfunction - - evalfunctionopline - - evalmethod - - evalmethodopline - - evalfile - - evalopline - - eval - - opcode - - attributes: - - name: name of the symbol (function/method/file/opcode) - - disabled: empty value if enabled, non-empty if enabled - -- errors (by type) - - exists: the breakpoint already exists - - maxoplines: tries to break at an opline (usedoplinenum) higher than the number of present oplines (in maxoplinenum) - - nomethod: method doesn't exist - - internalfunction: one cannot break on an opline of an internal function - - notregular: tries to set a breakpoint in not a regular file - - (invalidparameter: should not happen: is an internal error) - -frame ------ - -- General tag for frames is "<frame>" -- always has id attribute; if it only has id attribute, it just indicates current frame number, no other elements follow -- may contain other elements (of type <arg>) when contained in <backtrace> tag -- <arg> always contains a <stream> element, the value of the variable - -### possible attributes ### - -- id: the frame id, current frame has id 0 (frames with internal function calls have the same id than their called frame) -- symbol ("{main}" is root frame) -- file -- line -- internal: has value "internal" when being an internal function call (one cannot inspect that frame) - -- being an error: (by type) - - maxnum: tried to access a frame with a number higher than existing (or < 0) - -### attributes on <arg> ### - -- variadic: has a non-empty value if the argument is variadic -- name: variable name of parameter - -info (subcommands) ------------------- - -### break ### - -- See above ("break / info break") - -### files ### - -- lists included files -- <includedfileinfo num="" /> with num having an integer value, indicating the number of included files -- <includedfile name=""/>: one per file, with name being the file path of the included file - -### error ### - -- gets last error -- <lasterror error="" (file="" line="") /> -- error attribute contains the last error as a string, is empty if there's no last error - -### constants ### - -- <constantinfo num="" /> with num having an integer value, indicating the number of (local or superglobal) variables -- if info vars was used it'll have also one of these attributes: - - method - - function - - file - - opline -- for each variable there is a <constant> element -- <constant address="" refcount="" type="" name="" /> - - address: pointer to zval (hexadecimal) - - refcount: refcount of zval - - type: the variable type (long, string, ...). If the value is "unknown", the other attributes are meaningless - - name: the name of the variable - - value: the value of primitive types (scalars) => string/int/bool/double - - length: if string, then the length of that string - -### vars / globals ### - -- <variableinfo num="" /> with num having an integer value, indicating the number of (local or superglobal) variables -- if info vars was used it'll have also one of these attributes: - - method - - function - - file - - opline -- for each variable there is a <variable> element -- <variable address="" refcount="" type="" name="" /> - - address: pointer to zval (hexadecimal) - - refcount: refcount of zval - - type: the variable type (long, string, ...). If the value is "unknown", the other attributes are meaningless - - name: the name of the variable - - refstatus: empty if the zval is not a reference - - class: the class the object in the zval is an instance of - - resource: the type of the resource in the zval - - value: the value of primitive types (scalars) => string/int/bool/double - - length: if string, then the length of that string - -### literal ### - -- <literalinfo num="" /> with num having an integer value, indicating the number of literals, optional arguments are: - - method - - function - - file - - opline -- for each literal there is a <literal> followed by a <stream type="stdout"> which prints the value of the literal -- <literal id="" />: where id is the internal identifier of the literal - -### memory ### - -- Format: - - <meminfo /> - <current /> - <used mem="" /> - <real mem="" /> - <peak /> - <used mem="" /> - <real mem="" /> - -- mem is an attribute whose value is a float. The memory is given in kilobytes (1 kB == 1024 bytes) - -### classes ### - -- <classinfo num="" /> with num having an integer value, indicating the number of loaded user-defined classes -- Each class is enumerated with first a <class>, then an optional <parents> container and then a <classsource> element -- The <parents> container contains the <class> elements of the parent of the last <class> element. -- <class type="" flags="" name="" methodcount="" /> - - type: either "User" or "Internal" - - flags: either "Interface", "Class" or "Abstract Class" -- <classsource /> where the class was defined, if there are no attributes, location is unknown, usually defined by - - file - - line - -### funcs ### - -- <functioninfo num="" /> with num having an integer value, indicating the number of loaded user-defined functions -- Each class is enumerated with first a <function> and then a <functionsource> element -- <function name="" /> -- <functionsource /> where the function was defined, if there are no attributes, location is unknown, usually defined by - - file - - line - -list ----- - -- consists of <line> elements wrapped in a <list> container -- <list file=""> is the container element with file being the filename -- <line line="" code="" /> with value of code being the whole line of code in the line specified in the line attribute - - current: this attribute is set to "current" if that line is the line where the executor currently is - -print ------ - -### without a subcommand ### - -- <print> elements are wrapped in a <printinfo> element -- there may be a variable number of <print> elements with a variable count of args inside the <printinfo> element -- possible args are: - - readline: yes/no - readline enabled or disabled - - libedit: yes/no - libedit enabled or disabled - - context: current executing context - - compiled: yes/no - are there actual compiled ops? - - stepping: @@ TODO (meaningless for now) @@ - - quiet: on/off - should it always print the opline being currently executed? - - oplog: on/off - are oplines logged in a file? - - ops: number of opcodes in current executing context - - vars: number of compiled variables (CV) - - executing: yes/no - in executor? - - vmret: the return value of the last executed opcode - - default: continue - - 1: return from vm - - 2: enter stack frame - - 3: leave stack frame - - classes: number of classes - - functions: number of functions - - constants: number of constants - - includes: number of included files - -### with a subcommand ### - -- introduced by <printinfo num="" /> (except for print opline) with num being the number of opcodes and one of these args: - - file - - method - - function - - class (then also type and flags attributes, see info classes command for their meanings) - - symbol (also type and flags attributes; here the value of flags is either "Method" or "Function") -- if there is a class method, the methods are all wrapped in a <printmethods> container -- then comes a <printoplineinfo type="" /> where type is either "User" or "Internal" -- the <printoplineinfo> has either a method or a function attribute -- if the type is "Internal" - - there are no oplines, it's an internal method or function -- if the type is "User" - - it has these attributes - - startline: the first line of code where the method or function is defined - - endline: the lastt line of code where the method or function is defined - - file: the file of code where the method or function is defined - - is followed by the oplines of that method or function (<print> elements) -- <print line="%u" opline="%p" opcode="%s" op="%s" /> -- in case of print opline it emits a single <opline line="" opline="" opcode="" op="" file="" /> - -exec ----- - -- command executing and compiling a given file - - <exec type="unset" context="" />: indicates unsetting of the old context - - <exec type="unsetops" />: indicates unsetting of the old compiled opcodes - - <exec type="unchanged" />: same execution context chosen again - - <exec type="set" context="" />: indicates setting of the new context -- errors by tag - - <compile> - - openfailure: couldn't open file - - compilefailure: The file indicated in context couldn't be compiled - - <exec> - - invalid: given context (attribute) is not matching a valid file or symlink - - notfound: given context (attribute) does not exist - -run / <stop> tag -------------------- - -- runs the script (set via exec command) -- <stop type="end" />: script execution ended normally -- (error) <stop type="bailout" /> the VM bailed out (usually because there was some error) -- compile failures see under exec, errors, <compile> - -step ----- - -- steps by one line or opcode (as defined via set stepping) default is one line -- returns back to the executor - -continue --------- - -- returns back to the executor - -until ------ - -- temporarily disables all the breakpoints on that line until that line was left once -- returns back to the executor - -finish ------- - -- temporarily disables all the breakpoints until the end of the current frame -- returns back to the executor - -leave ------- - -- temporarily disables all the breakpoints past the end of the current frame and then stops -- returns back to the executor - -back ----- - -- prints backtrace -- see frame command - -ev --- - -- eval()uates some code -- output wrapped in <eval> tags -- output is here first a dump of xml tags (see "Variable Dump" section), then a dump wrapped in <stream> tags -- if there's an error, the tag will be <eval>, instead of the usual <php> tag - -sh --- - -- executes shell command -- still pipes to stdout ... without wrapping <stream> !!! (@@ TODO @@) - -source ------- - -- executes a file in .phpdbginit format -- errors by type - - notfound: file not found - -register --------- - -- registers a function to be used like a command -- <register function="" />: successfully registered function -- errors by type - - notfound: no such function - - inuse: function already registered - -quit ----- - -- quits phpdbg -- if successful connection will be closed... - -clean ------ - -- cleans environment (basically a shutdown + new startup) -- <clean> tags wrapped in a <cleaninfo> container -- possible attributes of <clean> tag - - classes: number of classes - - functions: number of functions - - constants: number of constants - - includes: number of included files - -clear ------ - -- removes all breakpoints -- <clear> tags wrapped in a <clearinfo> container -- possible attributes of <clear> tag (value is always the number of defined breakpoints of that type) - - files - - functions - - methods - - oplines - - fileoplines - - functionoplines - - methodoplines - - eval - -watch ------ - -- watchpoints generally are identified by a variable (one may need to switch frames first...) -- <watch variable="" />, <watchrecursive variable="" /> and <watcharray variable="" /> (normal, array, recursive) -- <watch> if error, by type: - - undefined: tried to set a watchpoint on a not (yet) defined variable - - notiterable: element which is tried to be accessed as an object or array is nor array nor object - - invalidinput: generally malformed input -- <watchdelete variable="" />: when "watch delete" was used on a watchpoint -- (error) <watchdelete type="nowatch" />: that watchpoint doesn't exist, so couldn't be deleted -- for hit watchpoints etc., see Other tags, <watch*> -- when using watch list, <watchvariable> elements are wrapped in a <watchlist> container - - <watchvariable variable="" on="" type="" /> - - variable: watched variable (may be a variable of another scope!) - - on: values are array or variable, depending on what is watched - - type: values are recursive or simple, depending on whether the watchpoint is checked recursively or not - -set ---- - -- a general error is type="wrongargs" where a wrong argument was passed to a subcommand; tag is then <set*> - -### prompt ### - -- without other args, a <setpromt str="" /> tag is emitted where the value of the str attribue is the value of the prompt -- when there is another arg, the prompt is changed to that arg, no further xml answer - -### break ### - -- enables / disables a given breakpoint silently with no further xml answer -- if the boolean switch is omitted, it emits current state in a <setbreak id="" active="" /> where active is on or off -- error with type="nobreak", when no breakpoint with the given id exists - -### breaks ### - -- generally enables / disables breakpoint functionality silently with no further xml answer -- if the boolean switch is omitted, it emits current state in a <setbreaks active="" /> where active is on or off - -### color ### - -- sets the color on prompt, error or notices -- <setcolor type="" color="" code="" />: code is the color code of color, type is either: - - prompt - - error - - notice -- errors by type: - - nocolor: color doesn't exist - - invalidtype: type wasn't one of the three allowed types - -### colors ### - -- generally enables / disables colors silently with no further xml answer -- if the boolean switch is omitted, it emits current state in a <setcolors active="" /> where active is on or off - -### oplog ### - -- sets oplog -- (error) <setoplog type="openfailure" file="" /> when it couldn't open the passed file path -- <setoplog type="closingold" /> is emitted when there was a previous open oplog (and a file is passed) -- if no further argument is passed, it emits current state in a <setoplog active="" /> where active is on or off - -### quiet ### - -- generally enables / disables quietness silently with no further xml answer -- if the boolean switch is omitted, it emits current state in a <setquiet active="" /> where active is on or off - -### setpping ### - -- sets stepping to either opcode or line (so a step command will either advance one op or one line) -- if no further argument is passed, it emits current state in a <setoplog type="" /> where active is opcode or line - -### refcount ### - -- generally enables / disables showing of refcount in watchpoint breaks silently with no further xml answer -- if the boolean switch is omitted, it emits current state in a <setrefcount active="" /> where active is on or off - -wait ----- - -- internally executes exec, so exec will output first (if binding to socket worked) - -### attributes ### - -- import: has value "success"/"fail" -- missingmodule/missingextension: modules/extensions loaded in the target SAPI, but not in phpdbg - -### errors (by type) ### - -- nosocket: couldn't establish socket -- invaliddata: invalid JSON passed to socket - -dl --- - -- loads a module or Zend extension at a given path -- if a relative path is passed, it's relative to the extension_dir ini setting - -### attributes ### - -- extensiontype: "Zend extension" or "module" -- name: the extension name -- path: the path where it was loaded - -### errors (by type) ### - -- unsupported: dynamic extension loading is unsupported -- relpath: relative path given, but no extension_dir defined -- unknown: general error with internal DL_LOAD() (for message see msg attribute) -- wrongapi: wrong Zend engine version (apineeded / apiinstalled attributes give information about the API versions) -- wrongbuild: unmatched build versions (buildneeded / buildinstalled attributes give information about the build versions) -- registerfailure: registering module failed -- startupfailure: couldn't startup Zend extension / module -- initfailure: couldn't initialize module -- nophpso: passed shared object is not a valid Zend extension nor module - -- errors may have the module or extension attribute when their name is already known at the point of failure - - -Other tags -========== - -<signal> ------------ - -- received caught signal - -### attributes ### - -- type: type of signal (e.g. SIGINT) - -### by type ### - -- SIGINT: interactive mode is entered... - -<watch*> ------------ - -- generally emitted on hit watchpoint -- <watchdelete variable="" />: when a variable was unset, the watchpoint is removed too -- <watchhit variable="" />: when ever a watched variable is changed, followed by a <watchdata> container -- <watchdata> may contain - - for watchpoints on variables: - - each of these <watch*> tags conatins a type attribute whose value is either "old" or "new") - - <watchvalue type="" inaccessible="inaccessible" />: old value is inaccessible - - <watchvalue type=""> may contain a <stream> element which indicates the old/new (type attribute) value of the variable - - <watchrefcount type="" refcount="" isref="" />: old/new (type attribute) refcount and isref, both numbers - - isref: if the value is 0, it's not a reference, else it is one - - for watchpoints on arrays: - - <watchsize> inspects size variations of an array (the sum): - - removed: number of elements removed - - added: number of elements added - - <watcharrayptr>: if this tag appears, the internal pointer of the array way changed - -<signalsegv> ---------------- - -- generally emitted when data couldn't be fetched (e.g. by accessing inconsistent data); only used in hard interrupt mode -- it might mean that data couldn't be fetched at all, or that only incomplete data was fetched (e.g. when a fixed number of following attributes are fetched, this tag will mark a stop of fetching if none or not all tags were printed) - - -Variable Dump -============= - -- all except property and element tags have a refstatus attribute, is set to non-empty if it's a reference - -object properties ------------------ - -- wrapped in a property tag <property name="" protection=""> - - name: name of key - - protection: one of these three values: public / protected / private - - class: only present if protection attribute is set to "private", contains the name of the class to which the property belongs -- if the property tag contains any serverity="error" attribute, there was some crucial error to read it, just skip it - -array elements --------------- -- wrapped in an element tag <property name="" protection=""> - - name: name of key -- if the element tag contains any serverity="error" attribute, there was some crucial error to read it, jsut skip it - -int ---- - -- <int refstatus="" value="" /> - - value is the integer - -float ------ - -- <float refstatus="" value="" /> - - value is the float - -bool ----- - -- <bool refstatus="" value="" /> - -value: true or false - -string ------- - -- <string refstatus="" length="" value="" /> - - length: length or string - - value: the string - -null ----- - -- <null refstatus="" /> - -array ------ - -- <array refstatus="" num=""> - - num: number of elements - - contains <element> tags - -object ------- - -- <object refstatus="" class="" id="" num=""> - - class: name of the class the object is an instance of (may be empty if unknown) - - id: id of the object - - num: number of properties - - contains <property> tags - -resource --------- - -- <resource refstatus="" id="" type="" /> - - id: resource id - - type: type of resource - -recursion ---------- - -- <recursion /> -- if that tag appears, there's a recursive reference inside the value to be printed |