Index: trunk/kernel/include/debugger.php
===================================================================
diff -u -r903 -r904
--- trunk/kernel/include/debugger.php (.../debugger.php) (revision 903)
+++ trunk/kernel/include/debugger.php (.../debugger.php) (revision 904)
@@ -6,6 +6,7 @@
if(!defined('DBG_USE_SHUTDOWN_FUNC')) define('DBG_USE_SHUTDOWN_FUNC',1);
if(!defined('DBG_HANDLE_ERRORS')) define('DBG_HANDLE_ERRORS', isset($_REQUEST['debug_host']) ? 0 : 1);
+ if(!defined('DBG_RAISE_ON_WARNINGS')) define('DBG_RAISE_ON_WARNINGS',0);
if(!defined('DOC_ROOT')) define('DOC_ROOT',$_SERVER['DOCUMENT_ROOT']);
if(!defined('WINDOWS_ROOT')) define('WINDOWS_ROOT','w:');
@@ -30,6 +31,8 @@
var $ProfilerData = Array();
var $RecursionStack = Array(); // prevent recursion when processing debug_backtrace() function results
+ var $TraceNextError=false;
+
var $Options = 0;
var $OptionsMap = Array('shutdown_func' => 1, 'error_handler' => 2,
'output_buffer' => 4, 'highlight_output' => 8);
@@ -64,6 +67,16 @@
return ($this->Options & $this->OptionsMap[$name]) == $this->OptionsMap[$name];
}
+ /**
+ * Set's flag, that next error that occurs will
+ * be prepended by backtrace results
+ *
+ */
+ function traceNext()
+ {
+ $this->TraceNextError=true;
+ }
+
function dumpVars()
{
$dumpVars = func_get_args();
@@ -93,22 +106,32 @@
break;
case 'trace':
+ ini_set('memory_limit','500M');
$trace =& $Data['trace'];
+
+ //return 'sorry';
+ //return $this->highlightString(print_r($trace,true));
+
+
$i = 0; $traceCount = count($trace);
$ret = '';
while($i < $traceCount)
{
$traceRec =& $trace[$i];
$argsID = 'trace_args_'.$dataIndex.'_'.$i;
- $ret .= 'Function: '.$this->getFileLink($traceRec['file'],$traceRec['line'],$traceRec['class'].$traceRec['type'].$traceRec['function']).'';
- $ret .= ' in '.basename($traceRec['file']).' on line '.$traceRec['line'].'
';
-
+ if(isset($traceRec['file']))
+ {
+ $ret .= 'Function: '.$this->getFileLink($traceRec['file'],$traceRec['line'],$traceRec['class'].$traceRec['type'].$traceRec['function']);
+ $ret .= ' in '.basename($traceRec['file']).' on line '.$traceRec['line'].'
';
+ }
+ else
+ {
+ $ret .= 'no file information available';
+ }
// ensure parameter value is not longer then 200 symbols
$this->processTraceArguments($traceRec['args']);
-
$args = $this->highlightString(print_r($traceRec['args'], true));
$ret .= '