]> granicus.if.org Git - php/commitdiff
added info funcs
authorkrakjoe <joe.watkins@live.co.uk>
Sun, 17 Nov 2013 18:55:06 +0000 (18:55 +0000)
committerkrakjoe <joe.watkins@live.co.uk>
Sun, 17 Nov 2013 18:55:06 +0000 (18:55 +0000)
phpdbg_info.c
phpdbg_info.h

index 315fb47a7db91327b5a5eac4b515731f145afbcd..794abb4361e7949953d31eb24e25f311c185c91a 100644 (file)
@@ -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;
+} /* }}} */
+
 
index 0223ed9f3a6331173feb2be75c9e2408dd65b5f1..971008d74448043ffc0117875414b574f7553c43 100644 (file)
 
 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
 };