28#define PHPDBG_INFO_COMMAND_D(f, h, a, m, l, s, flags) \
29 PHPDBG_COMMAND_D_EXP(f, h, a, m, l, s, &phpdbg_prompt_commands[13], flags)
65 phpdbg_notice(
"Included files: %d", zend_hash_num_elements(&
EG(included_files)));
67 phpdbg_error(
"Could not fetch included file count, invalid data source");
76 phpdbg_error(
"Could not fetch file name, invalid data source, aborting included file listing");
84 if (
PG(last_error_message)) {
89 PG(last_error_lineno));
106 if (
EG(zend_constants)) {
114 phpdbg_error(
"Cannot fetch all the constants, invalid data source");
124#define VARIABLEINFO(msg, ...) \
126 "%-18p %-7d %-9s %.*s" msg, &data->value, \
127 Z_REFCOUNTED(data->value) ? Z_REFCOUNT(data->value) : 1, \
128 zend_get_type_by_const(Z_TYPE(data->value)), \
129 (int) ZSTR_LEN(data->name), ZSTR_VAL(data->name), ##__VA_ARGS__)
162static int phpdbg_arm_auto_global(
zval *ptrzv) {
165 if (auto_global->
armed) {
176static int phpdbg_print_symbols(
bool show_globals) {
182 if (!
EG(current_execute_data) || !
EG(current_execute_data)->
func) {
190 symtable = &
EG(symbol_table);
205 phpdbg_error(
"Cannot fetch all data from the symbol table, invalid data source");
209 phpdbg_notice(
"Superglobal variables (%d)", zend_hash_num_elements(&vars));
213 if (
ops->function_name) {
215 phpdbg_notice(
"Variables in %s::%s() (%d)",
ops->scope->name->val,
ops->function_name->val, zend_hash_num_elements(&vars));
228 if (zend_hash_num_elements(&vars)) {
232 const char *isref =
"";
233#define VARIABLEINFO(msg, ...) \
235 "%-18p %-7d %-9s %s$%.*s" msg, data, Z_REFCOUNTED_P(data) ? Z_REFCOUNT_P(data) : 1, zend_get_type_by_const(Z_TYPE_P(data)), isref, (int) ZSTR_LEN(var), ZSTR_VAL(var), ##__VA_ARGS__)
296 return phpdbg_print_symbols(0);
301 return phpdbg_print_symbols(1);
310 int literal = 0,
count =
ops->last_literal - 1;
312 if (
ops->function_name) {
326 while (literal < ops->last_literal) {
343 size_t used, real, peak_used, peak_real;
363 phpdbg_writeln(
"|-------> Used:\t%.3f kB", (
float) (used / 1024));
364 phpdbg_writeln(
"|-------> Real:\t%.3f kB", (
float) (real / 1024));
366 phpdbg_writeln(
"|-------> Used:\t%.3f kB", (
float) (peak_used / 1024));
367 phpdbg_writeln(
"|-------> Real:\t%.3f kB", (
float) (peak_real / 1024));
392 zend_hash_next_index_insert_ptr(&classes, ce);
396 phpdbg_notice(
"Not all classes could be fetched, possibly invalid data source");
404 phpdbg_print_class_name(ce);
411 phpdbg_print_class_name(pce);
412 }
while ((pce = pce->
parent));
414 phpdbg_writeln(
"|-------- User Class %s (not yet linked because declaration for parent was not encountered when declaring the class)",
ZSTR_VAL(ce->
parent_name));
441 zend_hash_next_index_insert_ptr(&
functions, zf);
445 phpdbg_notice(
"Not all functions could be fetched, possibly invalid data source");
count(Countable|array $value, int $mode=COUNT_NORMAL)
const php_stream_filter_ops * ops
#define phpdbg_try_access
#define phpdbg_catch_access
#define PHPDBG_IN_SIGNAL_HANDLER
#define PHPDBG_BREAK_FUNCTION_OPLINE
#define PHPDBG_BREAK_COND
#define PHPDBG_BREAK_FILE_OPLINE
#define PHPDBG_BREAK_OPLINE
#define PHPDBG_BREAK_METHOD
#define PHPDBG_BREAK_OPCODE
#define PHPDBG_BREAK_METHOD_OPLINE
#define PHPDBG_BREAK_FILE
#define PHPDBG_END_COMMAND
struct _phpdbg_command_t phpdbg_command_t
#define PHPDBG_ASYNC_SAFE
#define VARIABLEINFO(msg,...)
phpdbg_print_breakpoints(PHPDBG_BREAK_SYM)
const phpdbg_command_t phpdbg_info_commands[]
#define PHPDBG_INFO_COMMAND_D(f, h, a, m, l, s, flags)
#define PHPDBG_INFO(name)
#define phpdbg_error(strfmt,...)
#define phpdbg_out(fmt,...)
#define phpdbg_write(strfmt,...)
#define phpdbg_notice(strfmt,...)
#define phpdbg_writeln(strfmt,...)
zend_mm_heap * phpdbg_original_heap_sigsafe_mem(void)
zend_auto_global_callback auto_global_callback
struct _zend_class_entry::@126215362204241324314155352336150042254204116267::@166057154351252324007362117353350250255142166322 user
union _zend_class_entry::@126215362204241324314155352336150042254204116267 info
zend_string * parent_name
zend_class_entry * parent
zend_string * function_name
ZEND_API size_t zend_print_zval(zval *expr, int indent)
#define ZEND_EXTERN_MODULE_GLOBALS(module_name)
ZEND_API zend_array * zend_rebuild_symbol_table(void)
ZEND_API size_t zend_memory_usage(bool real_usage)
ZEND_API bool is_zend_mm(void)
ZEND_API size_t zend_memory_peak_usage(bool real_usage)
ZEND_API zend_mm_heap * zend_mm_set_heap(zend_mm_heap *new_heap)
struct _zend_mm_heap zend_mm_heap
ZEND_API bool zend_is_auto_global(zend_string *name)
#define ZEND_ACC_ABSTRACT
#define ZEND_USER_FUNCTION
#define ZEND_ACC_INTERFACE
struct _zend_op_array zend_op_array
struct _zend_auto_global zend_auto_global
#define ZEND_CONSTANT_MODULE_NUMBER(c)
struct _zend_constant zend_constant
#define PHP_USER_CONSTANT
union _zend_function zend_function
ZEND_API void ZEND_FASTCALL zend_hash_destroy(HashTable *ht)
ZEND_API void ZEND_FASTCALL zend_hash_apply(HashTable *ht, apply_func_t apply_func)
ZEND_API zval *ZEND_FASTCALL zend_hash_update(HashTable *ht, zend_string *key, zval *pData)
#define zend_hash_init(ht, nSize, pHashFunction, pDestructor, persistent)
#define ZEND_HASH_MAP_FOREACH_PTR(ht, _ptr)
#define HT_IS_INITIALIZED(ht)
#define ZEND_HASH_PACKED_FOREACH_PTR(ht, _ptr)
#define ZEND_HASH_MAP_FOREACH_STR_KEY(ht, _key)
int(* apply_func_t)(zval *pDest)
#define ZEND_HASH_FOREACH_END()
#define ZEND_HASH_MAP_FOREACH_STR_KEY_VAL(ht, _key, _val)
const char * zend_rsrc_list_get_rsrc_type(zend_resource *res)
struct _zend_string zend_string
struct _zend_array zend_array
struct _zend_class_entry zend_class_entry
#define Z_REFVAL_P(zval_p)
#define Z_STRVAL_P(zval_p)
struct _zend_array HashTable
#define Z_STRLEN_P(zval_p)
#define Z_OBJCE_P(zval_p)
#define Z_INDIRECT_P(zval_p)