Commit: 1d373be4fbaaf9878c4acb1afb21647651dbbbc4 Author: krakjoe <joe.watk...@live.co.uk> Tue, 12 Nov 2013 09:26:26 +0000 Parents: 83852d3bb775fd3555011e2cc1d5fdc9f418469e Branches: PHP-5.6
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=1d373be4fbaaf9878c4acb1afb21647651dbbbc4 Log: updates to helpers Changed paths: M phpdbg_help.c M phpdbg_print.c M phpdbg_print.h M phpdbg_prompt.c M phpdbg_prompt.h Diff: diff --git a/phpdbg_help.c b/phpdbg_help.c index 21feb07..1a78c69 100644 --- a/phpdbg_help.c +++ b/phpdbg_help.c @@ -19,6 +19,9 @@ #include "phpdbg.h" #include "phpdbg_help.h" +#include "phpdbg_print.h" + +ZEND_EXTERN_MODULE_GLOBALS(phpdbg); PHPDBG_HELP(exec) /* {{{ */ { @@ -31,7 +34,7 @@ PHPDBG_HELP(step) /* {{{ */ { printf("You can enable and disable stepping at any phpdbg prompt during execution\n"); printf("For example:\n"); - printf("\tphpdbg> stepping 1\n"); + printf("\t%sstepping 1\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will enable stepping\n"); printf("While stepping is enabled you are presented with a prompt after the execution of each opcode\n"); return SUCCESS; @@ -56,11 +59,16 @@ PHPDBG_HELP(compile) /* {{{ */ PHPDBG_HELP(print) /* {{{ */ { 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("\tphpdbg> print opcodes[0]\n"); - printf("Will show the opline @ 0\n"); - printf("Available print commands:\n"); - printf("\tNone\n"); + printf("Specific printers loaded are show below:\n"); + printf("%sCommands%s\n", PHPDBG_BOLD_LINE(TSRMLS_C), PHPDBG_END_LINE(TSRMLS_C)); + { + phpdbg_command_t *print_command = phpdbg_print_commands; + + while (print_command && print_command->name) { + printf("\t%s\t%s\n", print_command->name, print_command->tip); + ++print_command; + } + } return SUCCESS; } /* }}} */ @@ -86,13 +94,13 @@ PHPDBG_HELP(break) /* {{{ */ printf("\t\\my\\class::method\n"); printf("\t0x16\n"); printf("For example:\n"); - printf("\tphpdbg> break test.php:1\n"); + printf("\t%sbreak test.php:1\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will break execution on line 1 of test.php\n"); - printf("\tphpdbg> break my_function\n"); + printf("\t%sbreak my_function\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will break execution on entry to my_function\n"); - printf("\tphpdbg> break \\my\\class::method\n"); + printf("\t%sbreak \\my\\class::method\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will break execution on entry to \\my\\class::method\n"); - printf("\tphpdbg> break 0x7ff68f570e08\n"); + printf("\t%sbreak 0x7ff68f570e08\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will break at the opline with the address provided (addresses are shown during execution)\n"); printf("It is important to note, an address is only valid for the current compiled representation of the script\n"); printf("If you have to clean the environment and recompile then your opline break points will be invalid\n"); @@ -117,9 +125,9 @@ PHPDBG_HELP(quiet) /* {{{ */ { printf("Setting quietness on will stop the OPLINE output during execution\n"); printf("For example:\n"); - printf("\tphpdbg> quiet 1\n"); + printf("\t%squiet 1\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will silence OPLINE output, while\n"); - printf("\tphpdbg> quiet 0\n"); + printf("\t%squiet 0\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will enable OPLINE output again\n"); return SUCCESS; } /* }}} */ @@ -128,7 +136,7 @@ PHPDBG_HELP(back) /* {{{ */ { printf("The backtrace is gathered with the default debug_backtrace functionality.\n"); printf("You can set the limit on the trace, for example:\n"); - printf("\tphpdbg> back 5\n"); + printf("\t%sback 5\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will limit the number of frames to 5, the default is no limit\n"); return SUCCESS; } /* }}} */ @@ -136,11 +144,11 @@ PHPDBG_HELP(back) /* {{{ */ PHPDBG_HELP(list) /* {{{ */ { printf("The list command displays N line from current context file.\n"); - printf("\tphpdbg> list 2\n"); + printf("\t%slist 2\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will print next 2 lines from the current file\n"); - printf("\tphpdbg> list func\n"); + printf("\t%slist func\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will print the source of the global function \"func\"\n"); - printf("\tphpdbg> list .mine\n"); + printf("\t%slist .mine\n", PHPDBG_PROMPT_LINE(TSRMLS_C)); printf("Will print the source of the class method \"mine\"\n"); printf("Note: before listing functions you must have a populated function table, try compile !!\n"); return SUCCESS; diff --git a/phpdbg_print.c b/phpdbg_print.c index d49cc26..7477897 100644 --- a/phpdbg_print.c +++ b/phpdbg_print.c @@ -20,8 +20,18 @@ #include "phpdbg.h" #include "phpdbg_print.h" -PHPDBG_PRINT(default) /* {{{ */ +ZEND_EXTERN_MODULE_GLOBALS(phpdbg); + +PHPDBG_PRINT(opline) /* {{{ */ { - printf("in default printer\n"); + if (EG(in_execution) && EG(current_execute_data)) { + phpdbg_print_opline( + EG(current_execute_data), 1 TSRMLS_CC); + } else { + printf( + "%sNot Executing!%s\n", + PHPDBG_RED_LINE(TSRMLS_C), PHPDBG_END_LINE(TSRMLS_C)); + } + return SUCCESS; } /* }}} */ diff --git a/phpdbg_print.h b/phpdbg_print.h index 825316a..ae8453b 100644 --- a/phpdbg_print.h +++ b/phpdbg_print.h @@ -34,13 +34,13 @@ /** * Printer Forward Declarations */ -PHPDBG_PRINT(default); +PHPDBG_PRINT(opline); /** * Commands */ static const phpdbg_command_t phpdbg_print_commands[] = { - PHPDBG_PRINT_D(default, "the default print command"), + PHPDBG_PRINT_D(opline, "print the current opline information"), {NULL, 0, 0} }; diff --git a/phpdbg_prompt.c b/phpdbg_prompt.c index dd225d6..5fae155 100644 --- a/phpdbg_prompt.c +++ b/phpdbg_prompt.c @@ -699,15 +699,15 @@ phpdbg_interactive_enter: return SUCCESS; } /* }}} */ -static void phpdbg_print_opline(zend_execute_data *execute_data TSRMLS_DC) /* {{{ */ +void phpdbg_print_opline(zend_execute_data *execute_data, zend_bool ignore_flags TSRMLS_DC) /* {{{ */ { /* force out a line while stepping so the user knows what is happening */ - if (!(PHPDBG_G(flags) & PHPDBG_IS_QUIET) || (PHPDBG_G(flags) & PHPDBG_IS_STEPPING)) { + if (ignore_flags || (!(PHPDBG_G(flags) & PHPDBG_IS_QUIET) || (PHPDBG_G(flags) & PHPDBG_IS_STEPPING))) { zend_op *opline = execute_data->opline; printf( "%sOPLINE: %p:%s%s\n", - PHPDBG_BOLD_LINE(TSRMLS_C), + PHPDBG_BOLD_LINE(TSRMLS_C), opline, phpdbg_decode_opcode(opline->opcode), PHPDBG_END_LINE(TSRMLS_C)); } } /* }}} */ @@ -731,7 +731,7 @@ zend_vm_enter: #endif phpdbg_print_opline( - execute_data TSRMLS_CC); + execute_data, 0 TSRMLS_CC); if ((PHPDBG_G(flags) & PHPDBG_HAS_FILE_BP) && phpdbg_find_breakpoint_file(execute_data->op_array TSRMLS_CC) == SUCCESS) { diff --git a/phpdbg_prompt.h b/phpdbg_prompt.h index bddc7f9..f9fd39d 100644 --- a/phpdbg_prompt.h +++ b/phpdbg_prompt.h @@ -60,5 +60,6 @@ int phpdbg_do_cmd(const phpdbg_command_t *command, char *cmd_line, size_t cmd_le int phpdbg_interactive(TSRMLS_D); void phpdbg_execute_ex(zend_execute_data *execute_data TSRMLS_DC); +void phpdbg_print_opline(zend_execute_data *execute_data, zend_bool ignore_flags TSRMLS_DC); #endif /* PHPDBG_PROMPT_H */ -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php