- Added "info vars" to show active variables

This commit is contained in:
Felipe Pena 2013-11-17 16:43:37 -02:00
parent 33098232dc
commit 31f45d5457
2 changed files with 46 additions and 1 deletions

View file

@ -38,3 +38,44 @@ PHPDBG_INFO(files) /* {{{ */
return SUCCESS; return SUCCESS;
} /* }}} */ } /* }}} */
PHPDBG_INFO(error) /* {{{ */
{
return SUCCESS;
} /* }}} */
PHPDBG_INFO(vars) /* {{{ */
{
HashPosition pos;
char *var;
zval **data;
if (!EG(active_symbol_table)) {
zend_rebuild_symbol_table(TSRMLS_C);
if (!EG(active_symbol_table)) {
phpdbg_error("No active symbol table!");
return SUCCESS;
}
}
phpdbg_notice("Variables: %d",
zend_hash_num_elements(EG(active_symbol_table)));
zend_hash_internal_pointer_reset_ex(EG(active_symbol_table), &pos);
while (zend_hash_get_current_key_ex(EG(active_symbol_table), &var,
NULL, NULL, 0, &pos) == HASH_KEY_IS_STRING) {
zend_hash_get_current_data_ex(EG(active_symbol_table), (void **)&data, &pos);
if (*var != '_') {
phpdbg_write("Var: %s = ", var, *data == NULL ? "NULL" : "");
if (data) {
zend_print_flat_zval_r(*data TSRMLS_CC);
phpdbg_writeln(EMPTY);
}
}
zend_hash_move_forward_ex(EG(active_symbol_table), &pos);
}
return SUCCESS;
} /* }}} */

View file

@ -37,9 +37,13 @@
int PHPDBG_INFO_HANDLER(name)(phpdbg_param_t *param TSRMLS_DC) int PHPDBG_INFO_HANDLER(name)(phpdbg_param_t *param TSRMLS_DC)
PHPDBG_INFO(files); PHPDBG_INFO(files);
PHPDBG_INFO(error);
PHPDBG_INFO(vars);
static const phpdbg_command_t phpdbg_info_commands[] = { 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(error, "show the last error", 'e'),
PHPDBG_INFO_EX_D(vars, "show active variables", 'v'),
PHPDBG_END_COMAND PHPDBG_END_COMAND
}; };