return SUCCESS;
} /* }}} */
- PHPDBG_HELP(brake) /* {{{ */
-PHPDBG_HELP(print) /* {{{ */
++PHPDBG_HELP(print) /* {{{ */
{
- printf("doing brake help: %s\n", expr);
-
- return SUCCESS;
+ printf("By default, print will show information about the current execution environment\n");
+ printf("To show specific information pass an expression to print, for example:\n");
+ printf("\tprint opcodes[0]\n");
+ printf("Will show the opline @ 0\n");
+ printf("Available print commands:\n");
+ printf("\tNone\n");
-
++
+ return SUCCESS;
+ } /* }}} */
+
-PHPDBG_HELP(brake) /* {{{ */
++PHPDBG_HELP(break) /* {{{ */
+ {
- printf("doing brake help: %s\n", expr);
-
++ printf("doing break help: %s\n", expr);
++
+ return SUCCESS;
} /* }}} */
* Helper Forward Declarations
*/
PHPDBG_HELP(exec);
+ PHPDBG_HELP(compile);
PHPDBG_HELP(print);
--PHPDBG_HELP(brake);
++PHPDBG_HELP(break);
/**
* Commands
*/
static const phpdbg_command_t phpdbg_help_commands[] = {
- PHPDBG_HELP_D(exec, "the execution context should be a valid phpdbg path"),
- PHPDBG_HELP_D(print, "printing allows inspection of the execution environment"),
- PHPDBG_HELP_D(brake, "brake points allow execution interruption"),
+ PHPDBG_HELP_D(exec, "the execution context should be a valid phpdbg path"),
+ PHPDBG_HELP_D(compile, "pre-compilation allows inspection of code before execution"),
+ PHPDBG_HELP_D(print, "printing allows inspection of the execution environment"),
- PHPDBG_HELP_D(brake, "brake points allow execution interruption"),
++ PHPDBG_HELP_D(break, "breakpoints allow execution interruption"),
{NULL, 0, 0}
};
printf(
"Unsetting old execution context: %s\n", PHPDBG_G(exec));
efree(PHPDBG_G(exec));
-
+ PHPDBG_G(exec) = NULL;
+ }
++
+ if (PHPDBG_G(ops)) {
+ printf(
+ "Destroying compiled opcodes\n");
+ destroy_op_array(PHPDBG_G(ops) TSRMLS_CC);
+ efree(PHPDBG_G(ops));
+ PHPDBG_G(ops) = NULL;
}
-
+
PHPDBG_G(exec) = estrndup(
expr, PHPDBG_G(exec_len)=expr_len);
-
+
printf(
"Set execution context: %s\n", PHPDBG_G(exec));
-
++
+ return SUCCESS;
+ } /* }}} */
+
+ static PHPDBG_COMMAND(compile) { /* {{{ */
+ zend_file_handle fh;
-
++
+ if (PHPDBG_G(exec)) {
-
++
+ if (PHPDBG_G(ops)) {
+ printf("Destroying compiled opcodes\n");
+ destroy_op_array(PHPDBG_G(ops) TSRMLS_CC);
+ efree(PHPDBG_G(ops));
+ }
-
++
+ printf("Attempting compilation of %s\n", PHPDBG_G(exec));
+ if (php_stream_open_for_zend_ex(PHPDBG_G(exec), &fh, USE_PATH|STREAM_OPEN_FOR_INCLUDE TSRMLS_CC) == SUCCESS) {
+ PHPDBG_G(ops) = zend_compile_file(
+ &fh, ZEND_INCLUDE TSRMLS_CC);
+ zend_destroy_file_handle(&fh TSRMLS_CC);
+ printf("Success\n");
+ return SUCCESS;
+ } else {
+ printf("Could not open file %s\n", PHPDBG_G(exec));
+ return FAILURE;
+ }
+ } else {
+ printf("No execution context\n");
+ return FAILURE;
+ }
} /* }}} */
static PHPDBG_COMMAND(print) { /* {{{ */
return SUCCESS;
} /* }}} */
--static PHPDBG_COMMAND(brake) { /* {{{ */
++static PHPDBG_COMMAND(break) { /* {{{ */
return SUCCESS;
} /* }}} */
} /* }}} */
static const phpdbg_command_t phpdbg_prompt_commands[] = {
- PHPDBG_COMMAND_D(exec, "set execution context"),
- PHPDBG_COMMAND_D(print, "print something"),
- PHPDBG_COMMAND_D(brake, "set brake point"),
- PHPDBG_COMMAND_D(help, "show help menu"),
- PHPDBG_COMMAND_D(quit, "exit phpdbg"),
- PHPDBG_COMMAND_D(exec, "set execution context"),
- PHPDBG_COMMAND_D(compile, "attempt to pre-compile execution context"),
- PHPDBG_COMMAND_D(print, "print something"),
- PHPDBG_COMMAND_D(brake, "set brake point"),
++ PHPDBG_COMMAND_D(exec, "set execution context"),
++ PHPDBG_COMMAND_D(compile, "attempt to pre-compile execution context"),
++ PHPDBG_COMMAND_D(print, "print something"),
++ PHPDBG_COMMAND_D(break, "set breakpoint"),
+ PHPDBG_COMMAND_D(help, "show help menu"),
+ PHPDBG_COMMAND_D(quit, "exit phpdbg"),
{NULL, 0, 0}
};