Browse Source

Merge branch 'master' of https://github.com/krakjoe/phpdbg

pull/550/head
krakjoe 13 years ago
parent
commit
fa3056c833
  1. 1
      phpdbg.h
  2. 25
      phpdbg_bp.c
  3. 9
      phpdbg_list.c

1
phpdbg.h

@ -57,6 +57,7 @@
#define PHPDBG_HAS_SYM_BP 0x00000010
#define PHPDBG_HAS_OPLINE_BP 0x00000100
#define PHPDBG_HAS_METHOD_BP 0x00001000
#define PHPDBG_BP_MASK (PHPDBG_HAS_FILE_BP|PHPDBG_HAS_SYM_BP|PHPDBG_HAS_METHOD_BP|PHPDBG_HAS_OPLINE_BP)
#define PHPDBG_IS_STEPPING 0x00010000
#define PHPDBG_IS_QUIET 0x00100000

25
phpdbg_bp.c

@ -36,7 +36,7 @@ static void phpdbg_llist_breakfile_dtor(void *data) /* {{{ */
static void phpdbg_class_breaks_dtor(void *data) /* {{{ */
{
phpdbg_breakmethod_t *bp = (phpdbg_breakmethod_t*) data;
efree((char*)bp->class_name);
efree((char*)bp->func_name);
} /* }}} */
@ -92,13 +92,13 @@ void phpdbg_set_breakpoint_symbol(const char *name TSRMLS_DC) /* {{{ */
}
} /* }}} */
void phpdbg_set_breakpoint_method(const char* class_name,
void phpdbg_set_breakpoint_method(const char* class_name,
size_t class_len,
const char* func_name,
const char* func_name,
size_t func_len TSRMLS_DC) /* {{{ */
{
HashTable class_breaks, *class_table;
if (zend_hash_find(&PHPDBG_G(bp)[PHPDBG_BREAK_METHOD], class_name, class_len, (void**)&class_table) != SUCCESS) {
zend_hash_init(
&class_breaks, 8, NULL, phpdbg_class_breaks_dtor, 0);
@ -110,15 +110,15 @@ void phpdbg_set_breakpoint_method(const char* class_name,
if (!zend_hash_exists(class_table, func_name, func_len)) {
phpdbg_breakmethod_t new_break;
PHPDBG_G(flags) |= PHPDBG_HAS_METHOD_BP;
new_break.class_name = class_name;
new_break.class_len = class_len;
new_break.func_name = func_name;
new_break.func_len = func_len;
new_break.id = PHPDBG_G(bp_count)++;
zend_hash_update(class_table, func_name, func_len, &new_break, sizeof(phpdbg_breakmethod_t), NULL);
printf(
"[Breakpoint #%d added at %s::%s]\n", new_break.id, class_name, func_name);
@ -200,9 +200,9 @@ int phpdbg_find_breakpoint_symbol(zend_function *fbc TSRMLS_DC) /* {{{ */
if (fbc->type != ZEND_USER_FUNCTION) {
return FAILURE;
}
ops = (zend_op_array*)fbc;
if (ops->scope) {
/* find method breaks here */
return phpdbg_find_breakpoint_method(
@ -235,9 +235,9 @@ int phpdbg_find_breakpoint_method(zend_op_array *ops TSRMLS_DC) /* {{{ */
(void**)&class_table) == SUCCESS) {
if (zend_hash_find(
class_table,
ops->function_name,
ops->function_name,
strlen(ops->function_name), (void**)&bp) == SUCCESS) {
printf(
"[Breakpoint #%d in %s::%s() at %s:%u]\n", bp->id, bp->class_name, bp->func_name,
zend_get_executed_filename(TSRMLS_C),
@ -272,7 +272,8 @@ void phpdbg_clear_breakpoints(TSRMLS_D) /* {{{ */
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_OPLINE]);
zend_hash_clean(&PHPDBG_G(bp)[PHPDBG_BREAK_METHOD]);
PHPDBG_G(flags) &= ~(PHPDBG_HAS_FILE_BP|PHPDBG_HAS_SYM_BP|PHPDBG_HAS_METHOD_BP|PHPDBG_HAS_OPLINE_BP);
PHPDBG_G(flags) &= ~PHPDBG_BP_MASK;
PHPDBG_G(bp_count) = 0;
} /* }}} */

9
phpdbg_list.c

@ -33,11 +33,14 @@ void phpdbg_list_file(const char *filename, long count, long offset) /* {{{ */
unsigned int line = 0, displayed = 0;
if ((fd = open(filename, O_RDONLY)) == -1) {
printf("[Failed to open file to list]\n");
printf("[Failed to open file %s to list]\n", filename);
return;
}
fstat(fd, &st);
if (fstat(fd, &st) == -1) {
printf("[Failed to stat file %s]\n", filename);
goto out;
}
last_pos = mem = mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
end_pos = mem + st.st_size;
@ -67,6 +70,6 @@ void phpdbg_list_file(const char *filename, long count, long offset) /* {{{ */
}
munmap(mem, st.st_size);
out:
close(fd);
} /* }}} */
Loading…
Cancel
Save