From: Felipe Pena Date: Tue, 12 Nov 2013 01:41:14 +0000 (-0200) Subject: - Added PHPDBG_BP_MASK macro X-Git-Tag: php-5.6.0alpha1~110^2~459^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ec5d30097e83ec753153a9504c8755f719c5f82;p=php - Added PHPDBG_BP_MASK macro --- diff --git a/phpdbg.h b/phpdbg.h index 457d682ce6..2e392e9dbb 100644 --- a/phpdbg.h +++ b/phpdbg.h @@ -50,6 +50,7 @@ #define PHPDBG_HAS_SYM_BP 0x00000010 #define PHPDBG_HAS_OPLINE_BP 0x00000100 #define PHPDBG_HAS_METHOD_BP 0x00001000 +#define PHPDBG_BP_MASK (PHPDBG_HAS_FILE_BP|PHPDBG_HAS_SYM_BP|PHPDBG_HAS_METHOD_BP|PHPDBG_HAS_OPLINE_BP) #define PHPDBG_IS_STEPPING 0x00010000 #define PHPDBG_IS_QUIET 0x00100000 diff --git a/phpdbg_bp.c b/phpdbg_bp.c index e1138193d3..d147d59e51 100644 --- a/phpdbg_bp.c +++ b/phpdbg_bp.c @@ -36,7 +36,7 @@ static void phpdbg_llist_breakfile_dtor(void *data) /* {{{ */ static void phpdbg_class_breaks_dtor(void *data) /* {{{ */ { phpdbg_breakmethod_t *bp = (phpdbg_breakmethod_t*) data; - + efree((char*)bp->class_name); efree((char*)bp->func_name); } /* }}} */ @@ -92,33 +92,33 @@ void phpdbg_set_breakpoint_symbol(const char *name TSRMLS_DC) /* {{{ */ } } /* }}} */ -void phpdbg_set_breakpoint_method(const char* class_name, +void phpdbg_set_breakpoint_method(const char* class_name, size_t class_len, - const char* func_name, + const char* func_name, size_t func_len TSRMLS_DC) /* {{{ */ { HashTable class_breaks, *class_table; - + if (zend_hash_find(&PHPDBG_G(bp_methods), class_name, class_len, (void**)&class_table) != SUCCESS) { zend_hash_init( &class_breaks, 8, NULL, phpdbg_class_breaks_dtor, 0); zend_hash_update( - &PHPDBG_G(bp_methods), - class_name, class_len, + &PHPDBG_G(bp_methods), + class_name, class_len, (void**)&class_breaks, sizeof(HashTable), (void**)&class_table); } if (!zend_hash_exists(class_table, func_name, func_len)) { phpdbg_breakmethod_t new_break; - + PHPDBG_G(flags) |= PHPDBG_HAS_METHOD_BP; - + new_break.class_name = class_name; new_break.class_len = class_len; new_break.func_name = func_name; new_break.func_len = func_len; new_break.id = PHPDBG_G(bp_count)++; - + zend_hash_update(class_table, func_name, func_len, &new_break, sizeof(phpdbg_breakmethod_t), NULL); printf( "[Breakpoint #%d added at %s::%s]\n", new_break.id, class_name, func_name); @@ -200,9 +200,9 @@ int phpdbg_find_breakpoint_symbol(zend_function *fbc TSRMLS_DC) /* {{{ */ if (fbc->type != ZEND_USER_FUNCTION) { return FAILURE; } - + ops = (zend_op_array*)fbc; - + if (ops->scope) { /* find method breaks here */ return phpdbg_find_breakpoint_method( @@ -231,13 +231,13 @@ int phpdbg_find_breakpoint_method(zend_op_array *ops TSRMLS_DC) /* {{{ */ HashTable *class_table; phpdbg_breakmethod_t *bp; - if (zend_hash_find(&PHPDBG_G(bp_methods), ops->scope->name, ops->scope->name_length, + if (zend_hash_find(&PHPDBG_G(bp_methods), ops->scope->name, ops->scope->name_length, (void**)&class_table) == SUCCESS) { if (zend_hash_find( class_table, - ops->function_name, + ops->function_name, strlen(ops->function_name), (void**)&bp) == SUCCESS) { - + printf( "[Breakpoint #%d in %s::%s() at %s:%u]\n", bp->id, bp->class_name, bp->func_name, zend_get_executed_filename(TSRMLS_C), @@ -271,8 +271,8 @@ void phpdbg_clear_breakpoints(TSRMLS_D) /* {{{ */ zend_hash_clean(&PHPDBG_G(bp_symbols)); zend_hash_clean(&PHPDBG_G(bp_oplines)); zend_hash_clean(&PHPDBG_G(bp_methods)); - - PHPDBG_G(flags) &= ~(PHPDBG_HAS_FILE_BP|PHPDBG_HAS_SYM_BP|PHPDBG_HAS_METHOD_BP|PHPDBG_HAS_OPLINE_BP); + + PHPDBG_G(flags) &= ~PHPDBG_BP_MASK; PHPDBG_G(bp_count) = 0; } /* }}} */