new_break.filename = estrndup(path, path_len);
new_break.line = line_num;
-
+
PHPDBG_G(has_file_bp) = 1;
if (zend_hash_find(&PHPDBG_G(bp_files),
new_break.id = PHPDBG_G(bp_count)++;
zend_llist_add_element(break_files_ptr, &new_break);
-
+
printf(
"[Breakpoint #%d added at %s:%ld]\n", new_break.id, new_break.filename, new_break.line);
} /* }}} */
zend_hash_update(&PHPDBG_G(bp_symbols), new_break.symbol,
name_len, &new_break, sizeof(phpdbg_breaksymbol_t), NULL);
-
+
printf("[Breakpoint #%d added at %s]\n", new_break.id, new_break.symbol);
} else {
printf("[Breakpoint exists at %s]\n", name);
void phpdbg_set_breakpoint_opline(const char *name TSRMLS_DC) /* {{{ */
{
zend_ulong opline = strtoul(name, 0, 16);
-
+
if (!zend_hash_index_exists(&PHPDBG_G(bp_oplines), opline)) {
phpdbg_breakline_t new_break;
PHPDBG_G(has_opline_bp) = 1;
-
+
new_break.name = strdup(name);
new_break.opline = opline;
new_break.id = PHPDBG_G(bp_count)++;
-
+
zend_hash_index_update(&PHPDBG_G(bp_oplines), opline, &new_break, sizeof(phpdbg_breakline_t), NULL);
-
+
printf("[Breakpoint #%d added at %s]\n", new_break.id, new_break.name);
} else {
printf("[Breakpoint exists at %s]\n", name);
phpdbg_breakline_t new_break;
PHPDBG_G(has_opline_bp) = 1;
-
+
asprintf(
(char**)&new_break.name, "%p", (zend_op*) opline);
-
+
new_break.opline = (zend_ulong) opline;
new_break.id = PHPDBG_G(bp_count)++;
-
+
zend_hash_index_update(&PHPDBG_G(bp_oplines), (zend_ulong) opline, &new_break, sizeof(phpdbg_breakline_t), NULL);
-
+
printf("[Breakpoint #%d added at %p]\n", new_break.id, (zend_op*) new_break.opline);
}
} /* }}} */
if (zend_hash_find(&PHPDBG_G(bp_symbols), fname, strlen(fname),
(void**)&bp) == SUCCESS) {
- printf("[Breakpoint #%d in %s() at %s]\n", bp->id, bp->symbol,
- zend_get_executed_filename(TSRMLS_C));
+ printf("[Breakpoint #%d in %s() at %s:%u]\n", bp->id, bp->symbol,
+ zend_get_executed_filename(TSRMLS_C),
+ zend_get_executed_lineno(TSRMLS_C));
return SUCCESS;
}
if (zend_hash_index_find(&PHPDBG_G(bp_oplines), (zend_ulong) opline,
(void**)&bp) == SUCCESS) {
- printf("[Breakpoint #%d in %s at %s]\n", bp->id, bp->name,
- zend_get_executed_filename(TSRMLS_C));
-
+ printf("[Breakpoint #%d in %s at %s:%u]\n", bp->id, bp->name,
+ zend_get_executed_filename(TSRMLS_C),
+ zend_get_executed_lineno(TSRMLS_C));
+
return SUCCESS;
}
-
+
return FAILURE;
} /* }}} */
zend_hash_clean(&PHPDBG_G(bp_files));
zend_hash_clean(&PHPDBG_G(bp_symbols));
zend_hash_clean(&PHPDBG_G(bp_oplines));
-
+
PHPDBG_G(has_file_bp) = 0;
PHPDBG_G(has_sym_bp) = 0;
PHPDBG_G(has_opline_bp) = 0;