Index: trunk/core/kernel/utility/debugger.php =================================================================== diff -u -r2625 -r2678 --- trunk/core/kernel/utility/debugger.php (.../debugger.php) (revision 2625) +++ trunk/core/kernel/utility/debugger.php (.../debugger.php) (revision 2678) @@ -174,10 +174,15 @@ { $traceRec =& $trace[$i]; $argsID = 'trace_args_'.$dataIndex.'_'.$i; + + $has_args = isset($traceRec['args']); + if(isset($traceRec['file'])) { $func_name=isset($traceRec['class'])?$traceRec['class'].$traceRec['type'].$traceRec['function']:$traceRec['function']; - $ret .= 'Function: '.$this->getFileLink($traceRec['file'],$traceRec['line'],$func_name); + $args_link = $has_args ? 'Function' : 'Function'; + + $ret .= $args_link.': '.$this->getFileLink($traceRec['file'],$traceRec['line'],$func_name); $ret .= ' in '.basename($traceRec['file']).' on line '.$traceRec['line'].'
'; } else @@ -186,9 +191,12 @@ } // ensure parameter value is not longer then 200 symbols - $this->processTraceArguments($traceRec['args']); - $args = $this->highlightString(print_r($traceRec['args'], true)); - $ret .= ''; + if($has_args) + { + $this->processTraceArguments($traceRec['args']); + $args = $this->highlightString(print_r($traceRec['args'], true)); + $ret .= ''; + } $i++; } return $ret; @@ -207,19 +215,34 @@ } } + function isApplication(&$object) + { + $app_class = defined('APPLICATION_CLASS') ? strtolower(APPLICATION_CLASS) : 'kApplication'; + return get_class($object) == $app_class; + } + function processTraceArguments(&$traceArgs) { if(!$traceArgs) return ''; - foreach ($traceArgs as $argID => $argValue) + + $array_keys = array_keys($traceArgs); + foreach($array_keys as $argID) { + $argValue =& $traceArgs[$argID]; + if( is_array($argValue) || is_object($argValue) ) { if(is_object($argValue) && !in_array(get_class($argValue),$this->RecursionStack) ) { - if( get_class($argValue) == 'kfactory' || get_class($argValue) == 'debugger' ) continue; + array_push($this->RecursionStack, get_class($argValue)); + if( get_class($argValue) == 'kfactory' || $this->isApplication($argValue) || get_class($argValue) == 'templateparser' ) + { + $argValue = null; + continue; + } + // object & not in stack - ok - array_push($this->RecursionStack, get_class($argValue)); settype($argValue,'array'); $this->processTraceArguments($argValue); array_pop($this->RecursionStack); @@ -496,7 +519,7 @@ dbg_safeDefine('DBG_RAISE_ON_WARNINGS',0); dbg_safeDefine('DBG_WINDOW_WIDTH', 700); - + $this->memoryUsage['debugger_start']=memory_get_usage(); // show php session if any