mirror of
https://github.com/php/php-src.git
synced 2024-11-28 20:34:29 +08:00
more work on phpdbg conditional breaks
This commit is contained in:
parent
7df8e4fc0a
commit
6d3a2b4693
@ -53,6 +53,7 @@ static inline void _phpdbg_break_mapping(int id, HashTable *table) /* {{{ */
|
||||
zend_hash_index_del(&PHPDBG_G(bp)[PHPDBG_BREAK_MAP], (id))
|
||||
|
||||
#define PHPDBG_BREAK_INIT(b, t) do {\
|
||||
memset(&b, 0, sizeof(b)); \
|
||||
b.id = PHPDBG_G(bp_count)++; \
|
||||
b.type = t; \
|
||||
b.disabled = 0;\
|
||||
@ -192,6 +193,24 @@ PHPDBG_API void phpdbg_export_breakpoints_to_string(char **str) /* {{{ */
|
||||
|
||||
if (conditional->paramed) {
|
||||
switch (conditional->param.type) {
|
||||
case NUMERIC_FUNCTION_PARAM:
|
||||
phpdbg_asprintf(&new_str,
|
||||
"%sbreak at %s#%ld if %s\n",
|
||||
*str, conditional->param.str, conditional->param.num, conditional->code);
|
||||
break;
|
||||
|
||||
case NUMERIC_METHOD_PARAM:
|
||||
phpdbg_asprintf(&new_str,
|
||||
"%sbreak at %s::%s#%ld if %s\n",
|
||||
*str, conditional->param.method.class, conditional->param.method.name, conditional->param.num, conditional->code);
|
||||
break;
|
||||
|
||||
case ADDR_PARAM:
|
||||
phpdbg_asprintf(&new_str,
|
||||
"%sbreak at 0X%lx if %s\n",
|
||||
*str, conditional->param.addr, conditional->code);
|
||||
break;
|
||||
|
||||
case STR_PARAM:
|
||||
phpdbg_asprintf(&new_str,
|
||||
"%sbreak at %s if %s\n", *str, conditional->param.str, conditional->code);
|
||||
@ -835,6 +854,20 @@ static inline void phpdbg_create_conditional_break(phpdbg_breakcond_t *brake, co
|
||||
new_break.paramed = 1;
|
||||
phpdbg_copy_param(
|
||||
param, &new_break.param);
|
||||
if (new_break.param.type == FILE_PARAM ||
|
||||
new_break.param.type == NUMERIC_FILE_PARAM) {
|
||||
char realpath[MAXPATHLEN];
|
||||
|
||||
if (VCWD_REALPATH(new_break.param.file.name, realpath)) {
|
||||
efree(new_break.param.file.name);
|
||||
|
||||
new_break.param.file.name = estrdup(realpath);
|
||||
} else {
|
||||
phpdbg_error("eval", "type=\"invalidparameter\"", "Invalid file for conditional break %s", new_break.param.file.name);
|
||||
phpdbg_clear_param(&new_break.param);
|
||||
return;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
new_break.paramed = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user