xdebug uses an error handler mechanism to display its stack trace. If you check the xdebug sources and look in xdebug.c, you will see this on line 801:
if (XG(default_enable) && zend_hash_find(Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]), "HTTP_SOAPACT ION", 16, (void**)&dummy) == FAILURE) {
zend_error_cb = new_error_cb;
zend_throw_exception_hook = xdebug_throw_exception_hook;
}
xdebug_error_cb() ( ) xdebug_throw_exception_hook() xdebug_stack.c , , - , , ... - php set_error_handler().
!