mirror of
https://github.com/php/php-src.git
synced 2024-09-22 18:37:25 +00:00
uniform code in print.c
This commit is contained in:
parent
a28ea698b8
commit
8f4f4f0628
188
phpdbg_print.c
188
phpdbg_print.c
@ -90,37 +90,38 @@ PHPDBG_PRINT(class) /* {{{ */
|
||||
{
|
||||
zend_class_entry **ce;
|
||||
|
||||
if (param->type == STR_PARAM) {
|
||||
if (zend_lookup_class(param->str, param->len, &ce TSRMLS_CC) == SUCCESS) {
|
||||
phpdbg_notice(
|
||||
"%s %s: %s",
|
||||
((*ce)->type == ZEND_USER_CLASS) ?
|
||||
"User" : "Internal",
|
||||
((*ce)->ce_flags & ZEND_ACC_INTERFACE) ?
|
||||
"Interface" :
|
||||
((*ce)->ce_flags & ZEND_ACC_ABSTRACT) ?
|
||||
"Abstract Class" :
|
||||
"Class",
|
||||
(*ce)->name);
|
||||
|
||||
phpdbg_writeln("Methods (%d):", zend_hash_num_elements(&(*ce)->function_table));
|
||||
if (zend_hash_num_elements(&(*ce)->function_table)) {
|
||||
HashPosition position;
|
||||
zend_function *method;
|
||||
switch (param->type) {
|
||||
case STR_PARAM: {
|
||||
if (zend_lookup_class(param->str, param->len, &ce TSRMLS_CC) == SUCCESS) {
|
||||
phpdbg_notice(
|
||||
"%s %s: %s",
|
||||
((*ce)->type == ZEND_USER_CLASS) ?
|
||||
"User" : "Internal",
|
||||
((*ce)->ce_flags & ZEND_ACC_INTERFACE) ?
|
||||
"Interface" :
|
||||
((*ce)->ce_flags & ZEND_ACC_ABSTRACT) ?
|
||||
"Abstract Class" :
|
||||
"Class",
|
||||
(*ce)->name);
|
||||
|
||||
for (zend_hash_internal_pointer_reset_ex(&(*ce)->function_table, &position);
|
||||
zend_hash_get_current_data_ex(&(*ce)->function_table, (void**) &method, &position) == SUCCESS;
|
||||
zend_hash_move_forward_ex(&(*ce)->function_table, &position)) {
|
||||
phpdbg_print_function_helper(method TSRMLS_CC);
|
||||
phpdbg_writeln("Methods (%d):", zend_hash_num_elements(&(*ce)->function_table));
|
||||
if (zend_hash_num_elements(&(*ce)->function_table)) {
|
||||
HashPosition position;
|
||||
zend_function *method;
|
||||
|
||||
for (zend_hash_internal_pointer_reset_ex(&(*ce)->function_table, &position);
|
||||
zend_hash_get_current_data_ex(&(*ce)->function_table, (void**) &method, &position) == SUCCESS;
|
||||
zend_hash_move_forward_ex(&(*ce)->function_table, &position)) {
|
||||
phpdbg_print_function_helper(method TSRMLS_CC);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"The class %s could not be found", param->str);
|
||||
}
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"Cannot find class %s", param->str);
|
||||
}
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"Unsupported parameter type (%s) for command", phpdbg_get_param_type(param TSRMLS_CC));
|
||||
} break;
|
||||
|
||||
phpdbg_default_switch_case();
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@ -128,33 +129,34 @@ PHPDBG_PRINT(class) /* {{{ */
|
||||
|
||||
PHPDBG_PRINT(method) /* {{{ */
|
||||
{
|
||||
if (param->type == METHOD_PARAM) {
|
||||
zend_class_entry **ce;
|
||||
|
||||
if (zend_lookup_class(param->method.class, strlen(param->method.class), &ce TSRMLS_CC) == SUCCESS) {
|
||||
zend_function *fbc;
|
||||
char *lcname = zend_str_tolower_dup(param->method.name, strlen(param->method.name));
|
||||
switch (param->type) {
|
||||
case METHOD_PARAM: {
|
||||
zend_class_entry **ce;
|
||||
|
||||
if (zend_hash_find(&(*ce)->function_table, lcname, strlen(lcname)+1, (void**)&fbc) == SUCCESS) {
|
||||
phpdbg_notice(
|
||||
"%s Method %s",
|
||||
(fbc->type == ZEND_USER_FUNCTION) ? "User" : "Internal",
|
||||
fbc->common.function_name);
|
||||
|
||||
phpdbg_print_function_helper(fbc TSRMLS_CC);
|
||||
if (zend_lookup_class(param->method.class, strlen(param->method.class), &ce TSRMLS_CC) == SUCCESS) {
|
||||
zend_function *fbc;
|
||||
char *lcname = zend_str_tolower_dup(param->method.name, strlen(param->method.name));
|
||||
|
||||
if (zend_hash_find(&(*ce)->function_table, lcname, strlen(lcname)+1, (void**)&fbc) == SUCCESS) {
|
||||
phpdbg_notice(
|
||||
"%s Method %s",
|
||||
(fbc->type == ZEND_USER_FUNCTION) ? "User" : "Internal",
|
||||
fbc->common.function_name);
|
||||
|
||||
phpdbg_print_function_helper(fbc TSRMLS_CC);
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"The method %s could not be found", param->method.name);
|
||||
}
|
||||
|
||||
efree(lcname);
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"The method %s could not be found", param->method.name);
|
||||
"The class %s could not be found", param->method.class);
|
||||
}
|
||||
|
||||
efree(lcname);
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"Failed to find the requested class %s", param->method.class);
|
||||
}
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"Unsupported parameter type (%s) for command", phpdbg_get_param_type(param TSRMLS_CC));
|
||||
} break;
|
||||
|
||||
phpdbg_default_switch_case();
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
@ -162,51 +164,51 @@ PHPDBG_PRINT(method) /* {{{ */
|
||||
|
||||
PHPDBG_PRINT(func) /* {{{ */
|
||||
{
|
||||
if (param->type == STR_PARAM) {
|
||||
HashTable *func_table = EG(function_table);
|
||||
zend_function* fbc;
|
||||
const char *func_name = param->str;
|
||||
size_t func_name_len = param->len;
|
||||
char *lcname;
|
||||
/* search active scope if begins with period */
|
||||
if (func_name[0] == '.') {
|
||||
if (EG(scope)) {
|
||||
func_name++;
|
||||
func_name_len--;
|
||||
switch (param->type) {
|
||||
case STR_PARAM: {
|
||||
HashTable *func_table = EG(function_table);
|
||||
zend_function* fbc;
|
||||
const char *func_name = param->str;
|
||||
size_t func_name_len = param->len;
|
||||
char *lcname;
|
||||
/* search active scope if begins with period */
|
||||
if (func_name[0] == '.') {
|
||||
if (EG(scope)) {
|
||||
func_name++;
|
||||
func_name_len--;
|
||||
|
||||
func_table = &EG(scope)->function_table;
|
||||
} else {
|
||||
phpdbg_error("No active class");
|
||||
return SUCCESS;
|
||||
}
|
||||
} else if (!EG(function_table)) {
|
||||
phpdbg_error(
|
||||
"No function table loaded");
|
||||
return SUCCESS;
|
||||
} else {
|
||||
func_table = EG(function_table);
|
||||
}
|
||||
func_table = &EG(scope)->function_table;
|
||||
} else {
|
||||
phpdbg_error("No active class");
|
||||
return SUCCESS;
|
||||
}
|
||||
} else if (!EG(function_table)) {
|
||||
phpdbg_error(
|
||||
"No function table loaded");
|
||||
return SUCCESS;
|
||||
} else {
|
||||
func_table = EG(function_table);
|
||||
}
|
||||
|
||||
lcname = zend_str_tolower_dup(func_name, func_name_len);
|
||||
lcname = zend_str_tolower_dup(func_name, func_name_len);
|
||||
|
||||
if (zend_hash_find(func_table, lcname, strlen(lcname)+1, (void**)&fbc) == SUCCESS) {
|
||||
phpdbg_notice(
|
||||
"%s %s %s",
|
||||
(fbc->type == ZEND_USER_FUNCTION) ? "User" : "Internal",
|
||||
(fbc->common.scope) ? "Method" : "Function",
|
||||
fbc->common.function_name);
|
||||
|
||||
phpdbg_print_function_helper(fbc TSRMLS_CC);
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"The function %s could not be found", func_name);
|
||||
}
|
||||
|
||||
efree(lcname);
|
||||
} break;
|
||||
|
||||
if (zend_hash_find(func_table, lcname, strlen(lcname)+1, (void**)&fbc) == SUCCESS) {
|
||||
phpdbg_notice(
|
||||
"%s %s %s",
|
||||
(fbc->type == ZEND_USER_FUNCTION) ? "User" : "Internal",
|
||||
(fbc->common.scope) ? "Method" : "Function",
|
||||
fbc->common.function_name);
|
||||
|
||||
phpdbg_print_function_helper(fbc TSRMLS_CC);
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"Function %s not found", func_name);
|
||||
}
|
||||
|
||||
efree(lcname);
|
||||
|
||||
} else {
|
||||
phpdbg_error(
|
||||
"Unsupported parameter type (%s) for command", phpdbg_get_param_type(param TSRMLS_CC));
|
||||
phpdbg_default_switch_case();
|
||||
}
|
||||
|
||||
return SUCCESS;
|
||||
|
@ -427,51 +427,53 @@ static PHPDBG_COMMAND(back) /* {{{ */
|
||||
|
||||
static PHPDBG_COMMAND(print) /* {{{ */
|
||||
{
|
||||
if (param->type == EMPTY_PARAM) {
|
||||
phpdbg_writeln(SEPARATE);
|
||||
phpdbg_notice("Execution Context Information");
|
||||
switch (param->type) {
|
||||
case EMPTY_PARAM: {
|
||||
phpdbg_writeln(SEPARATE);
|
||||
phpdbg_notice("Execution Context Information");
|
||||
#ifdef HAVE_LIBREADLINE
|
||||
phpdbg_writeln("Readline\tyes");
|
||||
phpdbg_writeln("Readline\tyes");
|
||||
#else
|
||||
phpdbg_writeln("Readline\tno");
|
||||
phpdbg_writeln("Readline\tno");
|
||||
#endif
|
||||
|
||||
phpdbg_writeln("Exec\t\t%s", PHPDBG_G(exec) ? PHPDBG_G(exec) : "none");
|
||||
phpdbg_writeln("Compiled\t%s", PHPDBG_G(ops) ? "yes" : "no");
|
||||
phpdbg_writeln("Stepping\t%s", (PHPDBG_G(flags) & PHPDBG_IS_STEPPING) ? "on" : "off");
|
||||
phpdbg_writeln("Quietness\t%s", (PHPDBG_G(flags) & PHPDBG_IS_QUIET) ? "on" : "off");
|
||||
phpdbg_writeln("Oplog\t\t%s", PHPDBG_G(oplog) ? "on" : "off");
|
||||
phpdbg_writeln("Exec\t\t%s", PHPDBG_G(exec) ? PHPDBG_G(exec) : "none");
|
||||
phpdbg_writeln("Compiled\t%s", PHPDBG_G(ops) ? "yes" : "no");
|
||||
phpdbg_writeln("Stepping\t%s", (PHPDBG_G(flags) & PHPDBG_IS_STEPPING) ? "on" : "off");
|
||||
phpdbg_writeln("Quietness\t%s", (PHPDBG_G(flags) & PHPDBG_IS_QUIET) ? "on" : "off");
|
||||
phpdbg_writeln("Oplog\t\t%s", PHPDBG_G(oplog) ? "on" : "off");
|
||||
|
||||
if (PHPDBG_G(ops)) {
|
||||
phpdbg_writeln("Opcodes\t\t%d", PHPDBG_G(ops)->last);
|
||||
if (PHPDBG_G(ops)) {
|
||||
phpdbg_writeln("Opcodes\t\t%d", PHPDBG_G(ops)->last);
|
||||
|
||||
if (PHPDBG_G(ops)->last_var) {
|
||||
phpdbg_writeln("Variables\t%d", PHPDBG_G(ops)->last_var-1);
|
||||
} else {
|
||||
phpdbg_writeln("Variables\tNone");
|
||||
}
|
||||
}
|
||||
if (PHPDBG_G(ops)->last_var) {
|
||||
phpdbg_writeln("Variables\t%d", PHPDBG_G(ops)->last_var-1);
|
||||
} else {
|
||||
phpdbg_writeln("Variables\tNone");
|
||||
}
|
||||
}
|
||||
|
||||
phpdbg_writeln("Executing\t%s", EG(in_execution) ? "yes" : "no");
|
||||
if (EG(in_execution)) {
|
||||
phpdbg_writeln("VM Return\t%d", PHPDBG_G(vmret));
|
||||
}
|
||||
phpdbg_writeln("Classes\t\t%d", zend_hash_num_elements(EG(class_table)));
|
||||
phpdbg_writeln("Functions\t%d", zend_hash_num_elements(EG(function_table)));
|
||||
phpdbg_writeln("Constants\t%d", zend_hash_num_elements(EG(zend_constants)));
|
||||
phpdbg_writeln("Included\t%d", zend_hash_num_elements(&EG(included_files)));
|
||||
phpdbg_writeln("Executing\t%s", EG(in_execution) ? "yes" : "no");
|
||||
if (EG(in_execution)) {
|
||||
phpdbg_writeln("VM Return\t%d", PHPDBG_G(vmret));
|
||||
}
|
||||
phpdbg_writeln("Classes\t\t%d", zend_hash_num_elements(EG(class_table)));
|
||||
phpdbg_writeln("Functions\t%d", zend_hash_num_elements(EG(function_table)));
|
||||
phpdbg_writeln("Constants\t%d", zend_hash_num_elements(EG(zend_constants)));
|
||||
phpdbg_writeln("Included\t%d", zend_hash_num_elements(&EG(included_files)));
|
||||
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_FILE TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_SYM TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_METHOD TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_OPLINE TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_COND TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_FILE TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_SYM TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_METHOD TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_OPLINE TSRMLS_CC);
|
||||
phpdbg_print_breakpoints(PHPDBG_BREAK_COND TSRMLS_CC);
|
||||
|
||||
phpdbg_writeln(SEPARATE);
|
||||
} break;
|
||||
|
||||
phpdbg_writeln(SEPARATE);
|
||||
} else {
|
||||
phpdbg_error("You must use a specific printer");
|
||||
phpdbg_default_switch_case();
|
||||
}
|
||||
|
||||
|
||||
return SUCCESS;
|
||||
} /* }}} */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user