]> granicus.if.org Git - php/commitdiff
fix #36 add more info to conditional breakpoint output
authorkrakjoe <joe.watkins@live.co.uk>
Wed, 4 Dec 2013 14:20:13 +0000 (14:20 +0000)
committerkrakjoe <joe.watkins@live.co.uk>
Wed, 4 Dec 2013 14:20:13 +0000 (14:20 +0000)
phpdbg_bp.c
phpdbg_cmd.c
phpdbg_cmd.h

index bf6ef821c572eb314b173a69ae1022a80398926a..58e0d8a6cfa506997eee731d9b340f0fb9a859a0 100644 (file)
@@ -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, &param 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: {
index d5db5f0a2f963ebdfa396f4f25f34ea8c45aa241..543c01c6f0fbf39c0bdd070c0c8649d442a212c6 100644 (file)
@@ -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)) {
index f3d38d58eaaec0bfea5888d6b41f4647136dd9ca..ffb1a94597b11a15dafa9822d9a1fce9788aa737 100644 (file)
@@ -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