28#define PHPDBG_PRINT_COMMAND_D(f, h, a, m, l, s, flags) \
29 PHPDBG_COMMAND_D_EXP(f, h, a, m, l, s, &phpdbg_prompt_commands[8], flags)
52static inline void phpdbg_print_function_helper(
zend_function *method)
54 switch (method->
type) {
62 phpdbg_out(
"\ndynamic def: %i, function name: %.*s\n",
100 zend_op_array *
ops = &phpdbg_user_execute_data(
EG(current_execute_data))->func->op_array;
101 if (
ops->function_name) {
142 phpdbg_print_function_helper(method);
146 phpdbg_error(
"The class %s could not be found", param->str);
167 phpdbg_print_function_helper(
fbc);
169 phpdbg_error(
"The method %s::%s could not be found", param->method.class, param->method.name);
172 zend_string_release(
lcname);
174 phpdbg_error(
"The class %s could not be found", param->method.class);
195 func_table = &
scope->function_table;
200 }
else if (!
EG(function_table)) {
204 func_table =
EG(function_table);
211 if ((
fbc = zend_hash_find_ptr(func_table,
lcname))) {
214 (
fbc->common.scope) ?
"Method" :
"Function",
218 phpdbg_print_function_helper(
fbc);
243 phpdbg_print_function_helper(
func);
259 phpdbg_print_function_helper(
func);
270 phpdbg_print_opcodes_method_ce(ce,
function);
306 phpdbg_print_function_helper(method);
318 phpdbg_print_opcodes_ce(ce);
342 phpdbg_print_opcodes_ce(ce);
348 if (
strstr(function_lowercase,
"::") ==
NULL) {
351 char *method_name, *class_name =
strtok(function_lowercase,
"::");
359 efree(function_lowercase);
strtok(string $string, ?string $token=null)
strstr(string $haystack, string $needle, bool $before_needle=false)
const php_stream_filter_ops * ops
struct _phpdbg_oplog_entry phpdbg_oplog_entry
#define phpdbg_try_access
#define phpdbg_catch_access
#define PHPDBG_IS_STEPPING
#define phpdbg_end_try_access()
#define PHPDBG_IN_SIGNAL_HANDLER
phpdbg_oplog_list * oplog_list
phpdbg_oplog_entry * oplog_cur
#define PHPDBG_END_COMMAND
struct _phpdbg_command_t phpdbg_command_t
#define PHPDBG_ASYNC_SAFE
#define phpdbg_error(strfmt,...)
#define phpdbg_out(fmt,...)
#define phpdbg_notice(strfmt,...)
#define phpdbg_writeln(strfmt,...)
void phpdbg_print_opcodes(const char *function)
#define PHPDBG_PRINT_COMMAND_D(f, h, a, m, l, s, flags)
const phpdbg_command_t phpdbg_print_commands[]
void phpdbg_print_opcodes_function(const char *function, size_t len)
void phpdbg_print_opcodes_class(const char *class)
void phpdbg_print_opline(zend_execute_data *execute_data, bool ignore_flags)
void phpdbg_print_opcodes_main(void)
zend_str_tolower_copy(ZSTR_VAL(lcname), func_name, ZSTR_LEN(lcname))
void phpdbg_print_opcodes_method(const char *class, const char *function)
#define PHPDBG_PRINT(name)
int phpdbg_safe_class_lookup(const char *name, int name_length, zend_class_entry **ce)
zend_string * function_name
phpdbg_oplog_entry * next
zend_op_array ** dynamic_func_defs
zend_string * function_name
uint32_t num_dynamic_func_defs
zend_string * function_name
struct _zend_function::@236135173067030250234125302313220025134003177336 common
#define ZEND_EXTERN_MODULE_GLOBALS(module_name)
#define ZEND_ACC_ABSTRACT
#define ZEND_USER_FUNCTION
#define ZEND_ACC_INTERFACE
struct _zend_op_array zend_op_array
ZEND_API void zend_dump_op_line(const zend_op_array *op_array, const zend_basic_block *b, const zend_op *opline, uint32_t dump_flags, const void *data)
ZEND_API void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, const char *msg, const void *data)
#define ZEND_DUMP_LINE_NUMBERS
ZEND_API zend_class_entry * zend_get_executed_scope(void)
union _zend_function zend_function
#define ZEND_HASH_MAP_FOREACH_PTR(ht, _ptr)
#define ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(ht, _key, _ptr)
#define ZEND_HASH_FOREACH_END()
struct _zend_string zend_string
ZEND_API char *ZEND_FASTCALL zend_str_tolower_dup(const char *source, size_t length)
struct _zend_class_entry zend_class_entry
struct _zend_array HashTable
struct _zend_execute_data zend_execute_data
function(EX_VAR(opline->result.var))