From: krakjoe Date: Sun, 17 Nov 2013 18:55:06 +0000 (+0000) Subject: added info funcs X-Git-Tag: php-5.6.0alpha1~110^2~261^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6acf069c58cec1c396dafea3013d6e3209b69227;p=php added info funcs --- diff --git a/phpdbg_info.c b/phpdbg_info.c index 315fb47a7d..794abb4361 100644 --- a/phpdbg_info.c +++ b/phpdbg_info.c @@ -103,4 +103,42 @@ PHPDBG_INFO(classes) /* {{{ */ return SUCCESS; } /* }}} */ +PHPDBG_INFO(funcs) /* {{{ */ +{ + HashPosition position; + zend_function *zf, **pzf; + HashTable functions; + + zend_hash_init(&functions, 8, NULL, NULL, 0); + + for (zend_hash_internal_pointer_reset_ex(EG(function_table), &position); + zend_hash_get_current_data_ex(EG(function_table), (void**)&zf, &position) == SUCCESS; + zend_hash_move_forward_ex(EG(function_table), &position)) { + + if (zf->type == ZEND_USER_FUNCTION) { + zend_hash_next_index_insert( + &functions, (void**) &zf, sizeof(zend_function), NULL); + } + } + + phpdbg_notice("User Functions (%d)", + zend_hash_num_elements(&functions)); + + for (zend_hash_internal_pointer_reset_ex(&functions, &position); + zend_hash_get_current_data_ex(&functions, (void**)&pzf, &position) == SUCCESS; + zend_hash_move_forward_ex(&functions, &position)) { + zend_op_array *op_array = &((*pzf)->op_array); + + phpdbg_writeln( + "|-------- %s in %s on line %d", + op_array->function_name ? op_array->function_name : "{main}", + op_array->filename ? op_array->filename : "(no source code)", + op_array->line_start); + } + + zend_hash_destroy(&functions); + + return SUCCESS; +} /* }}} */ + diff --git a/phpdbg_info.h b/phpdbg_info.h index 0223ed9f3a..971008d744 100644 --- a/phpdbg_info.h +++ b/phpdbg_info.h @@ -38,10 +38,12 @@ PHPDBG_INFO(files); PHPDBG_INFO(classes); +PHPDBG_INFO(funcs); static const phpdbg_command_t phpdbg_info_commands[] = { PHPDBG_INFO_EX_D(files, "lists included files", 'F'), - PHPDBG_INFO_EX_D(classes, "lists loaded classes", 'c'), + PHPDBG_INFO_EX_D(classes, "lists loaded user classes", 'c'), + PHPDBG_INFO_EX_D(funcs, "lists loaded user functions", 'f'), PHPDBG_END_COMAND };