mirror of
https://github.com/php/php-src.git
synced 2026-04-24 16:38:25 +02:00
fix #36 add more info to conditional breakpoint output
This commit is contained in:
+20
-6
@@ -907,12 +907,26 @@ PHPDBG_API void phpdbg_print_breakpoint(phpdbg_breakbase_t *brake TSRMLS_DC) /*
|
||||
} break;
|
||||
|
||||
case PHPDBG_BREAK_COND: {
|
||||
phpdbg_notice("Conditional breakpoint #%d: (%s) %s:%u, hits: %lu",
|
||||
((phpdbg_breakcond_t*)brake)->id,
|
||||
((phpdbg_breakcond_t*)brake)->code,
|
||||
zend_get_executed_filename(TSRMLS_C),
|
||||
zend_get_executed_lineno(TSRMLS_C),
|
||||
((phpdbg_breakcond_t*)brake)->hits);
|
||||
if (((phpdbg_breakcond_t*)brake)->paramed) {
|
||||
char *param;
|
||||
phpdbg_notice("Conditional breakpoint #%d: at %s if %s %s:%u, hits: %lu",
|
||||
((phpdbg_breakcond_t*)brake)->id,
|
||||
phpdbg_param_tostring(&((phpdbg_breakcond_t*)brake)->param, ¶m TSRMLS_CC),
|
||||
((phpdbg_breakcond_t*)brake)->code,
|
||||
zend_get_executed_filename(TSRMLS_C),
|
||||
zend_get_executed_lineno(TSRMLS_C),
|
||||
((phpdbg_breakcond_t*)brake)->hits);
|
||||
if (param)
|
||||
free(param);
|
||||
} else {
|
||||
phpdbg_notice("Conditional breakpoint #%d: on %s == true %s:%u, hits: %lu",
|
||||
((phpdbg_breakcond_t*)brake)->id,
|
||||
((phpdbg_breakcond_t*)brake)->code,
|
||||
zend_get_executed_filename(TSRMLS_C),
|
||||
zend_get_executed_lineno(TSRMLS_C),
|
||||
((phpdbg_breakcond_t*)brake)->hits);
|
||||
}
|
||||
|
||||
} break;
|
||||
|
||||
default: {
|
||||
|
||||
@@ -119,6 +119,47 @@ PHPDBG_API void phpdbg_clear_param(phpdbg_param_t *param TSRMLS_DC) /* {{{ */
|
||||
|
||||
} /* }}} */
|
||||
|
||||
PHPDBG_API char* phpdbg_param_tostring(const phpdbg_param_t *param, char **pointer TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
switch (param->type) {
|
||||
case STR_PARAM:
|
||||
asprintf(pointer,
|
||||
"%s", param->str);
|
||||
break;
|
||||
|
||||
case ADDR_PARAM:
|
||||
asprintf(pointer,
|
||||
"%#lx", param->addr);
|
||||
break;
|
||||
|
||||
case NUMERIC_PARAM:
|
||||
asprintf(pointer,
|
||||
"%li",
|
||||
param->num);
|
||||
break;
|
||||
|
||||
case METHOD_PARAM:
|
||||
asprintf(pointer,
|
||||
"%s::%s",
|
||||
param->method.class,
|
||||
param->method.name);
|
||||
break;
|
||||
|
||||
case FILE_PARAM:
|
||||
asprintf(pointer,
|
||||
"%s:%u",
|
||||
param->file.name,
|
||||
param->file.line);
|
||||
break;
|
||||
|
||||
default:
|
||||
asprintf(pointer,
|
||||
"%s", "unknown");
|
||||
}
|
||||
|
||||
return *pointer;
|
||||
} /* }}} */
|
||||
|
||||
PHPDBG_API void phpdbg_copy_param(const phpdbg_param_t* src, phpdbg_param_t* dest TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
switch ((dest->type = src->type)) {
|
||||
|
||||
@@ -131,6 +131,7 @@ PHPDBG_API void phpdbg_copy_param(const phpdbg_param_t*, phpdbg_param_t* TSRMLS_
|
||||
PHPDBG_API zend_bool phpdbg_match_param(const phpdbg_param_t *, const phpdbg_param_t * TSRMLS_DC);
|
||||
PHPDBG_API zend_ulong phpdbg_hash_param(const phpdbg_param_t * TSRMLS_DC);
|
||||
PHPDBG_API const char* phpdbg_get_param_type(const phpdbg_param_t* TSRMLS_DC);
|
||||
PHPDBG_API char* phpdbg_param_tostring(const phpdbg_param_t *param, char **pointer TSRMLS_DC);
|
||||
|
||||
/*
|
||||
* Command Executor
|
||||
|
||||
Reference in New Issue
Block a user