trace allocations in a file

This commit is contained in:
andrey 2012-06-27 16:51:07 +03:00
parent a027ba3afe
commit 6e648e9340
5 changed files with 165 additions and 102 deletions

View file

@ -745,21 +745,26 @@ mysqlnd_debug_init(const char * skip_functions[] TSRMLS_DC)
PHPAPI void _mysqlnd_debug(const char * mode TSRMLS_DC)
{
#if PHP_DEBUG
MYSQLND_DEBUG *dbg = MYSQLND_G(dbg);
MYSQLND_DEBUG * dbg = MYSQLND_G(dbg);
if (!dbg) {
MYSQLND_G(dbg) = dbg = mysqlnd_debug_init(mysqlnd_debug_std_no_trace_funcs TSRMLS_CC);
if (!dbg) {
return;
struct st_mysqlnd_plugin_trace_log * trace_log_plugin = mysqlnd_plugin_find("debug_trace");
if (trace_log_plugin) {
dbg = trace_log_plugin->methods.trace_instance_init(mysqlnd_debug_std_no_trace_funcs TSRMLS_CC);
if (!dbg) {
return;
}
MYSQLND_G(dbg) = dbg;
}
}
dbg->m->close(dbg);
dbg->m->set_mode(dbg, mode);
while (zend_stack_count(&dbg->call_stack)) {
zend_stack_del_top(&dbg->call_stack);
}
while (zend_stack_count(&dbg->call_time_stack)) {
zend_stack_del_top(&dbg->call_time_stack);
if (dbg) {
dbg->m->close(dbg);
dbg->m->set_mode(dbg, mode);
while (zend_stack_count(&dbg->call_stack)) {
zend_stack_del_top(&dbg->call_stack);
}
while (zend_stack_count(&dbg->call_time_stack)) {
zend_stack_del_top(&dbg->call_time_stack);
}
}
#endif
}