123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- #ifndef PHPDBG_BP_H
- #define PHPDBG_BP_H
- #define PHPDBG_BREAK_FILE 0
- #define PHPDBG_BREAK_FILE_PENDING 1
- #define PHPDBG_BREAK_SYM 2
- #define PHPDBG_BREAK_OPLINE 3
- #define PHPDBG_BREAK_METHOD 4
- #define PHPDBG_BREAK_COND 5
- #define PHPDBG_BREAK_OPCODE 6
- #define PHPDBG_BREAK_FUNCTION_OPLINE 7
- #define PHPDBG_BREAK_METHOD_OPLINE 8
- #define PHPDBG_BREAK_FILE_OPLINE 9
- #define PHPDBG_BREAK_MAP 10
- #define PHPDBG_BREAK_TABLES 11
- typedef struct _zend_op *phpdbg_opline_ptr_t;
- #define phpdbg_breakbase(name) \
- int id; \
- zend_uchar type; \
- zend_ulong hits; \
- zend_bool disabled; \
- const char *name
- typedef struct _phpdbg_breakbase_t {
- phpdbg_breakbase(name);
- } phpdbg_breakbase_t;
- typedef struct _phpdbg_breakfile_t {
- phpdbg_breakbase(filename);
- long line;
- } phpdbg_breakfile_t;
- typedef struct _phpdbg_breaksymbol_t {
- phpdbg_breakbase(symbol);
- } phpdbg_breaksymbol_t;
- typedef struct _phpdbg_breakmethod_t {
- phpdbg_breakbase(class_name);
- size_t class_len;
- const char *func_name;
- size_t func_len;
- } phpdbg_breakmethod_t;
- typedef struct _phpdbg_breakopline_t {
- phpdbg_breakbase(func_name);
- size_t func_len;
- const char *class_name;
- size_t class_len;
- zend_ulong opline_num;
- zend_ulong opline;
- } phpdbg_breakopline_t;
- typedef struct _phpdbg_breakline_t {
- phpdbg_breakbase(name);
- zend_ulong opline;
- phpdbg_breakopline_t *base;
- } phpdbg_breakline_t;
- typedef struct _phpdbg_breakop_t {
- phpdbg_breakbase(name);
- zend_ulong hash;
- } phpdbg_breakop_t;
- typedef struct _phpdbg_breakcond_t {
- phpdbg_breakbase(code);
- size_t code_len;
- zend_bool paramed;
- phpdbg_param_t param;
- zend_ulong hash;
- zend_op_array *ops;
- } phpdbg_breakcond_t;
- PHPDBG_API void phpdbg_resolve_op_array_breaks(zend_op_array *op_array);
- PHPDBG_API int phpdbg_resolve_op_array_break(phpdbg_breakopline_t *brake, zend_op_array *op_array);
- PHPDBG_API int phpdbg_resolve_opline_break(phpdbg_breakopline_t *new_break);
- PHPDBG_API HashTable *phpdbg_resolve_pending_file_break_ex(const char *file, uint32_t filelen, zend_string *cur, HashTable *fileht);
- PHPDBG_API void phpdbg_resolve_pending_file_break(const char *file);
- PHPDBG_API void phpdbg_set_breakpoint_file(const char* filename, size_t path_len, long lineno);
- PHPDBG_API void phpdbg_set_breakpoint_symbol(const char* func_name, size_t func_name_len);
- PHPDBG_API void phpdbg_set_breakpoint_method(const char* class_name, const char* func_name);
- PHPDBG_API void phpdbg_set_breakpoint_opcode(const char* opname, size_t opname_len);
- PHPDBG_API void phpdbg_set_breakpoint_opline(zend_ulong opline);
- PHPDBG_API void phpdbg_set_breakpoint_opline_ex(phpdbg_opline_ptr_t opline);
- PHPDBG_API void phpdbg_set_breakpoint_method_opline(const char *class, const char *method, zend_ulong opline);
- PHPDBG_API void phpdbg_set_breakpoint_function_opline(const char *function, zend_ulong opline);
- PHPDBG_API void phpdbg_set_breakpoint_file_opline(const char *file, zend_ulong opline);
- PHPDBG_API void phpdbg_set_breakpoint_expression(const char* expression, size_t expression_len);
- PHPDBG_API void phpdbg_set_breakpoint_at(const phpdbg_param_t *param);
- PHPDBG_API phpdbg_breakbase_t* phpdbg_find_breakpoint(zend_execute_data*);
- PHPDBG_API void phpdbg_hit_breakpoint(phpdbg_breakbase_t* brake, zend_bool output);
- PHPDBG_API void phpdbg_print_breakpoints(zend_ulong type);
- PHPDBG_API void phpdbg_print_breakpoint(phpdbg_breakbase_t* brake);
- PHPDBG_API void phpdbg_reset_breakpoints(void);
- PHPDBG_API void phpdbg_clear_breakpoints(void);
- PHPDBG_API void phpdbg_delete_breakpoint(zend_ulong num);
- PHPDBG_API void phpdbg_enable_breakpoints(void);
- PHPDBG_API void phpdbg_enable_breakpoint(zend_ulong id);
- PHPDBG_API void phpdbg_disable_breakpoint(zend_ulong id);
- PHPDBG_API void phpdbg_disable_breakpoints(void);
- PHPDBG_API phpdbg_breakbase_t *phpdbg_find_breakbase(zend_ulong id);
- PHPDBG_API phpdbg_breakbase_t *phpdbg_find_breakbase_ex(zend_ulong id, HashTable **table, zend_ulong *numkey, zend_string **strkey);
- PHPDBG_API void phpdbg_export_breakpoints(FILE *handle);
- PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str);
- #endif
|