- Fix conflict

This commit is contained in:
Felipe Pena 2013-11-17 16:45:08 -02:00
commit 2c9dbc6b62
4 changed files with 92 additions and 1 deletions

View File

@ -23,6 +23,7 @@
#include "phpdbg_utils.h"
#include "phpdbg_break.h"
#include "phpdbg_list.h"
#include "phpdbg_info.h"
ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
@ -213,6 +214,28 @@ PHPDBG_HELP(clear) /* {{{ */
return SUCCESS;
} /* }}} */
PHPDBG_HELP(info) /* {{{ */
{
phpdbg_help_header();
phpdbg_writeln("info commands provides quick access to various types of information about the PHP environment");
phpdbg_writeln("Specific info commands are show below:");
phpdbg_notice("Commands");
{
const phpdbg_command_t *info_command = phpdbg_info_commands;
phpdbg_writeln("\tAlias\tCommand\t\tPurpose");
while (info_command && info_command->name) {
if (info_command->alias) {
phpdbg_writeln("\t[%c]\t%s\t\t%s", info_command->alias, info_command->name, info_command->tip);
} else phpdbg_writeln("\t[-]\t%s\t\t%s", info_command->name, info_command->tip);
++info_command;
}
}
phpdbg_help_footer();
return SUCCESS;
} /* }}} */
PHPDBG_HELP(quiet) /* {{{ */
{
phpdbg_help_header();

View File

@ -47,6 +47,7 @@ PHPDBG_HELP(print);
PHPDBG_HELP(break);
PHPDBG_HELP(clean);
PHPDBG_HELP(clear);
PHPDBG_HELP(info);
PHPDBG_HELP(back);
PHPDBG_HELP(quiet);
PHPDBG_HELP(list);
@ -69,6 +70,7 @@ static const phpdbg_command_t phpdbg_help_commands[] = {
PHPDBG_HELP_D(break, "breakpoints allow execution interruption", 'b'),
PHPDBG_HELP_D(clean, "resetting the environment is useful while debugging and recompiling", 'X'),
PHPDBG_HELP_D(clear, "clearing breakpoints allows you to run code without interruption", 'c'),
PHPDBG_HELP_D(info, "quick access to useful information on the console", 'i'),
PHPDBG_HELP_D(back, "show debug backtrace information during execution", 't'),
PHPDBG_HELP_D(quiet, "be quiet during execution", 's'),
PHPDBG_HELP_D(list, "listing code gives you quick access to code while executing", 'l'),

View File

@ -79,3 +79,67 @@ PHPDBG_INFO(vars) /* {{{ */
return SUCCESS;
} /* }}} */
static inline void phpdbg_print_class_name(zend_class_entry **ce TSRMLS_DC) { /* {{{ */
phpdbg_write(
"%s %s %s (%d)",
((*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, zend_hash_num_elements(&(*ce)->function_table));
} /* }}} */
PHPDBG_INFO(classes) /* {{{ */
{
HashPosition position;
zend_class_entry **ce;
HashTable classes;
zend_hash_init(&classes, 8, NULL, NULL, 0);
for (zend_hash_internal_pointer_reset_ex(EG(class_table), &position);
zend_hash_get_current_data_ex(EG(class_table), (void**)&ce, &position) == SUCCESS;
zend_hash_move_forward_ex(EG(class_table), &position)) {
if ((*ce)->type == ZEND_USER_CLASS) {
zend_hash_next_index_insert(
&classes, ce, sizeof(ce), NULL);
}
}
phpdbg_notice("User Classes (%d)",
zend_hash_num_elements(&classes));
for (zend_hash_internal_pointer_reset_ex(&classes, &position);
zend_hash_get_current_data_ex(&classes, (void**)&ce, &position) == SUCCESS;
zend_hash_move_forward_ex(&classes, &position)) {
phpdbg_print_class_name(ce TSRMLS_CC);
phpdbg_writeln(EMPTY);
if ((*ce)->parent) {
zend_class_entry *pce = (*ce)->parent;
do {
phpdbg_write("|-------- ");
phpdbg_print_class_name(&pce TSRMLS_CC);
phpdbg_writeln(EMPTY);
} while(pce = pce->parent);
}
if ((*ce)->info.user.filename) {
phpdbg_writeln(
"|---- in %s on line %lu",
(*ce)->info.user.filename,
(*ce)->info.user.line_start);
} else phpdbg_writeln("|---- no source code");
phpdbg_writeln(EMPTY);
}
zend_hash_destroy(&classes);
return SUCCESS;
} /* }}} */

View File

@ -37,11 +37,13 @@
int PHPDBG_INFO_HANDLER(name)(phpdbg_param_t *param TSRMLS_DC)
PHPDBG_INFO(files);
PHPDBG_INFO(classes);
PHPDBG_INFO(error);
PHPDBG_INFO(vars);
static const phpdbg_command_t phpdbg_info_commands[] = {
PHPDBG_INFO_EX_D(files, "lists included files", 'f'),
PHPDBG_INFO_EX_D(files, "lists included files", 'F'),
PHPDBG_INFO_EX_D(classes, "lists loaded classes", 'c'),
PHPDBG_INFO_EX_D(error, "show the last error", 'e'),
PHPDBG_INFO_EX_D(vars, "show active variables", 'v'),
PHPDBG_END_COMAND