]> granicus.if.org Git - php/commitdiff
- Added "info vars" to show active variables
authorFelipe Pena <felipensp@gmail.com>
Sun, 17 Nov 2013 18:43:37 +0000 (16:43 -0200)
committerFelipe Pena <felipensp@gmail.com>
Sun, 17 Nov 2013 18:43:37 +0000 (16:43 -0200)
phpdbg_info.c
phpdbg_info.h

index c396f15bfad929b734f6d88c3d4fefb832608614..fbe4f2b603fb1d733ce5fd1c6e16d16e6c1bada8 100644 (file)
@@ -38,3 +38,44 @@ PHPDBG_INFO(files) /* {{{ */
 
        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;
+} /* }}} */
index 1e967b07395469f945d594d9d37d00b44a36f1a5..1309a1c8763d850963aeea817ba8005192d8dcc1 100644 (file)
        int PHPDBG_INFO_HANDLER(name)(phpdbg_param_t *param TSRMLS_DC)
 
 PHPDBG_INFO(files);
+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(error,     "show the last error",   'e'),
+    PHPDBG_INFO_EX_D(vars,      "show active variables", 'v'),
     PHPDBG_END_COMAND
 };