Exemplo n.º 1
0
/* {{{ proto void phpdbg_break([integer type, string expression])
    instructs phpdbg to insert a breakpoint at the next opcode */
static PHP_FUNCTION(phpdbg_break)
{
	if (ZEND_NUM_ARGS() > 0) {
		long type;
		char *expr = NULL;
		zend_uint expr_len = 0;
		phpdbg_param_t param;

		if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &type, &expr, &expr_len) == FAILURE) {
			return;
		}

		phpdbg_parse_param(expr, expr_len, &param TSRMLS_CC);

		switch (type) {
			case METHOD_PARAM:
				phpdbg_do_break_method(&param, NULL TSRMLS_CC);
				break;

			case FILE_PARAM:
				phpdbg_do_break_file(&param, NULL TSRMLS_CC);
				break;

			case NUMERIC_PARAM:
				phpdbg_do_break_lineno(&param, NULL TSRMLS_CC);
				break;

			case STR_PARAM:
				phpdbg_do_break_func(&param, NULL TSRMLS_CC);
				break;

			default: zend_error(
							 E_WARNING, "unrecognized parameter type %ld", type);
		}

		phpdbg_clear_param(&param TSRMLS_CC);

	} else if (EG(current_execute_data) && EG(active_op_array)) {
		zend_ulong opline_num = (EG(current_execute_data)->opline -
				EG(active_op_array)->opcodes);

		phpdbg_set_breakpoint_opline_ex(
				&EG(active_op_array)->opcodes[opline_num+1] TSRMLS_CC);
	}
} /* }}} */
Exemplo n.º 2
0
/* {{{ proto void phpdbg_break([integer type, string expression])
    instructs phpdbg to insert a breakpoint at the next opcode */
static PHP_FUNCTION(phpdbg_break)
{
	if (ZEND_NUM_ARGS() > 0) {
		long type = 0;
		char *expr = NULL;
		int expr_len = 0;
		phpdbg_param_t param;

		if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ls", &type, &expr, &expr_len) == FAILURE) {
			return;
		}

		phpdbg_parse_param(expr, expr_len, &param TSRMLS_CC);
		phpdbg_do_break(&param TSRMLS_CC);
		phpdbg_clear_param(&param TSRMLS_CC);

	} else if (EG(current_execute_data) && EG(active_op_array)) {
		zend_ulong opline_num = (EG(current_execute_data)->opline -
				EG(active_op_array)->opcodes);

		phpdbg_set_breakpoint_opline_ex(
				&EG(active_op_array)->opcodes[opline_num+1] TSRMLS_CC);
	}
} /* }}} */