mirror of
https://github.com/php/php-src.git
synced 2024-12-11 10:54:47 +08:00
- Moved breakpoint checking to phpdbg_bp.c file
This commit is contained in:
parent
9d9182dfef
commit
46f5da1dc1
31
phpdbg_bp.c
31
phpdbg_bp.c
@ -23,6 +23,7 @@
|
||||
#include "phpdbg.h"
|
||||
#include "phpdbg_bp.h"
|
||||
#include "phpdbg_utils.h"
|
||||
#include "phpdbg_opcode.h"
|
||||
#include "zend_globals.h"
|
||||
|
||||
ZEND_EXTERN_MODULE_GLOBALS(phpdbg);
|
||||
@ -445,6 +446,36 @@ int phpdbg_find_conditional_breakpoint(TSRMLS_D) /* {{{ */
|
||||
return breakpoint;
|
||||
} /* }}} */
|
||||
|
||||
int phpdbg_find_breakpoint(zend_execute_data* execute_data TSRMLS_DC) /* {{{ */
|
||||
{
|
||||
if (PHPDBG_G(flags) & PHPDBG_HAS_FILE_BP
|
||||
&& phpdbg_find_breakpoint_file(execute_data->op_array TSRMLS_CC) == SUCCESS) {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(flags) & (PHPDBG_HAS_METHOD_BP|PHPDBG_HAS_SYM_BP)) {
|
||||
/* check we are at the beginning of the stack */
|
||||
if (execute_data->opline == EG(active_op_array)->opcodes) {
|
||||
if (phpdbg_find_breakpoint_symbol(
|
||||
execute_data->function_state.function TSRMLS_CC) == SUCCESS) {
|
||||
return SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (PHPDBG_G(flags) & PHPDBG_HAS_OPLINE_BP
|
||||
&& phpdbg_find_breakpoint_opline(execute_data->opline TSRMLS_CC) == SUCCESS) {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
if (PHPDBG_G(flags) & PHPDBG_HAS_OPCODE_BP
|
||||
&& phpdbg_find_breakpoint_opcode(execute_data->opline->opcode TSRMLS_CC) == SUCCESS) {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
return FAILURE;
|
||||
} /* }}} */
|
||||
|
||||
PHPDBG_API void phpdbg_clear_breakpoints(TSRMLS_D) /* {{{ */
|
||||
{
|
||||
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_FILE]);
|
||||
|
@ -92,6 +92,7 @@ int phpdbg_find_breakpoint_opline(phpdbg_opline_ptr_t TSRMLS_DC);
|
||||
int phpdbg_find_breakpoint_opcode(zend_uchar TSRMLS_DC);
|
||||
int phpdbg_find_conditional_breakpoint(TSRMLS_D);
|
||||
int phpdbg_find_catch(zend_uchar TSRMLS_DC);
|
||||
int phpdbg_find_breakpoint(zend_execute_data* TSRMLS_DC);
|
||||
|
||||
PHPDBG_API void phpdbg_clear_breakpoints(TSRMLS_D);
|
||||
PHPDBG_API void phpdbg_print_breakpoints(zend_ulong type TSRMLS_DC);
|
||||
|
@ -1370,28 +1370,8 @@ zend_vm_enter:
|
||||
DO_INTERACTIVE();
|
||||
}
|
||||
|
||||
if ((PHPDBG_G(flags) & PHPDBG_HAS_FILE_BP)
|
||||
&& phpdbg_find_breakpoint_file(execute_data->op_array TSRMLS_CC) == SUCCESS) {
|
||||
DO_INTERACTIVE();
|
||||
}
|
||||
|
||||
if ((PHPDBG_G(flags) & (PHPDBG_HAS_METHOD_BP|PHPDBG_HAS_SYM_BP))) {
|
||||
/* check we are at the beginning of the stack */
|
||||
if (execute_data->opline == EG(active_op_array)->opcodes) {
|
||||
if (phpdbg_find_breakpoint_symbol(
|
||||
execute_data->function_state.function TSRMLS_CC) == SUCCESS) {
|
||||
DO_INTERACTIVE();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (PHPDBG_G(flags) & PHPDBG_HAS_OPLINE_BP
|
||||
&& phpdbg_find_breakpoint_opline(execute_data->opline TSRMLS_CC) == SUCCESS) {
|
||||
DO_INTERACTIVE();
|
||||
}
|
||||
|
||||
if (PHPDBG_G(flags) & PHPDBG_HAS_OPCODE_BP
|
||||
&& phpdbg_find_breakpoint_opcode(execute_data->opline->opcode TSRMLS_CC) == SUCCESS) {
|
||||
if (PHPDBG_G(flags) & PHPDBG_BP_MASK
|
||||
&& phpdbg_find_breakpoint(execute_data TSRMLS_CC) == SUCCESS) {
|
||||
DO_INTERACTIVE();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user