@@ -54,6 +54,13 @@ static PHP_MINIT_FUNCTION(phpdbg) /* {{{ */
54
54
zend_execute = phpdbg_execute_ex ;
55
55
#endif
56
56
57
+ REGISTER_LONG_CONSTANT ("PHPDBG_EMPTY" , EMPTY_PARAM , CONST_CS |CONST_PERSISTENT );
58
+ REGISTER_LONG_CONSTANT ("PHPDBG_ADDR" , ADDR_PARAM , CONST_CS |CONST_PERSISTENT );
59
+ REGISTER_LONG_CONSTANT ("PHPDBG_FILE" , FILE_PARAM , CONST_CS |CONST_PERSISTENT );
60
+ REGISTER_LONG_CONSTANT ("PHPDBG_METHOD" , METHOD_PARAM , CONST_CS |CONST_PERSISTENT );
61
+ REGISTER_LONG_CONSTANT ("PHPDBG_NUMERIC" , NUMERIC_PARAM , CONST_CS |CONST_PERSISTENT );
62
+ REGISTER_LONG_CONSTANT ("PHPDBG_FUNC" , STR_PARAM , CONST_CS |CONST_PERSISTENT );
63
+
57
64
return SUCCESS ;
58
65
} /* }}} */
59
66
@@ -127,11 +134,44 @@ static PHP_RSHUTDOWN_FUNCTION(phpdbg) /* {{{ */
127
134
return SUCCESS ;
128
135
} /* }}} */
129
136
130
- /* {{{ proto void phpdbg_break(void )
137
+ /* {{{ proto void phpdbg_break([string expression] )
131
138
instructs phpdbg to insert a breakpoint at the next opcode */
132
139
static PHP_FUNCTION (phpdbg_break )
133
140
{
134
- if (EG (current_execute_data ) && EG (active_op_array )) {
141
+ if (ZEND_NUM_ARGS () > 0 ) {
142
+ long type ;
143
+ char * expr = NULL ;
144
+ zend_uint expr_len = 0 ;
145
+
146
+ if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "ls" , & type , & expr , & expr_len ) == FAILURE ) {
147
+ return ;
148
+ }
149
+
150
+ switch (type ) {
151
+ case METHOD_PARAM :
152
+ phpdbg_do_break_method (
153
+ expr , expr_len TSRMLS_CC );
154
+ break ;
155
+
156
+ case FILE_PARAM :
157
+ phpdbg_do_break_file (
158
+ expr , expr_len TSRMLS_CC );
159
+ break ;
160
+
161
+ case NUMERIC_PARAM :
162
+ phpdbg_do_break_lineno (
163
+ expr , expr_len TSRMLS_CC );
164
+ break ;
165
+
166
+ case STR_PARAM :
167
+ phpdbg_do_break_func (
168
+ expr , expr_len TSRMLS_CC );
169
+ break ;
170
+
171
+ default : zend_error (
172
+ E_WARNING , "unrecognized parameter type %d" , type );
173
+ }
174
+ } else if (EG (current_execute_data ) && EG (active_op_array )) {
135
175
zend_ulong opline_num = (EG (current_execute_data )-> opline -
136
176
EG (active_op_array )-> opcodes );
137
177
0 commit comments