Author: ts
Date: Tue Feb 26 12:32:26 2008
New Revision: 7448
Log:
- Implemented enhancement #10701: Getting a readable backtrace. The
ezcDebug->log() method now allows you to selectively add a stack trace to
debug log messages. The new ezcDebugOptions class allows to globally switch
on stack traces for all log messages.
Added:
trunk/Debug/tests/formatters/input/
trunk/Debug/tests/formatters/input/class.php (with props)
trunk/Debug/tests/formatters/input/stacktrace_php.php (with props)
trunk/Debug/tests/formatters/input/stacktrace_xdebug.php (with props)
trunk/Debug/tests/formatters/output/output_with_php_stacktrace.html
trunk/Debug/tests/formatters/output/output_with_xdebug_stacktrace.html
Modified:
trunk/Debug/ChangeLog
trunk/Debug/src/formatters/html_formatter.php
trunk/Debug/src/structs/debug_structure.php
trunk/Debug/tests/formatters/html_formatter_data_structures.php
trunk/Debug/tests/formatters/html_formatter_test.php
Modified: trunk/Debug/ChangeLog
==============================================================================
--- trunk/Debug/ChangeLog [iso-8859-1] (original)
+++ trunk/Debug/ChangeLog [iso-8859-1] Tue Feb 26 12:32:26 2008
@@ -1,6 +1,10 @@
-1.1.1 - [RELEASEDATE]
+1.2 - [RELEASEDATE]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+- Implemented enhancement #10701: Getting a readable backtrace. The
+ ezcDebug->log() method now allows you to selectively add a stack trace to
+ debug log messages. The new ezcDebugOptions class allows to globally switch
+ on stack traces for all log messages.
- Fixed issue #12427: Changed output rendering of the debug formatter to not
include a stylesheet by default, but instead the formatter now includes easy
overridable CSS classes.
Modified: trunk/Debug/src/formatters/html_formatter.php
==============================================================================
--- trunk/Debug/src/formatters/html_formatter.php [iso-8859-1] (original)
+++ trunk/Debug/src/formatters/html_formatter.php [iso-8859-1] Tue Feb 26
12:32:26 2008
@@ -87,10 +87,59 @@
<td colspan='2'>{$w->message}</td>
</tr>
ENDT;
+ if ( isset( $w->stackTrace ) )
+ {
+ $str .= "<tr class='debugstacktrace'>";
+ $str .= "<td colspan='2'>";
+ $str .= $this->formatStackTrace( $w->stackTrace );
+ $str .= "</td>";
+ $str .= "</tr>";
+ }
}
$str .= "</table>\n";
return $str;
+ }
+
+ public function formatStackTrace( ezcDebugStacktraceIterator $stackTrace )
+ {
+ $res = <<<EOT
+<table class='stacktrace'>
+<tr>
+ <td class='stacktraceno'>
+ #
+ </td>
+ <td class='stacktracefunction'>
+ Function
+ </td>
+ <td class='stacktracelocation'>
+ Location
+ </td>
+</tr>
+EOT;
+ foreach ( $stackTrace as $index => $element )
+ {
+ $function = ( isset( $element['class'] ) ? "{$element['class']}::"
: '' )
+ . $element['function'] . '('
+ . implode( ', ', $element['params'] )
+ . ')';
+ $location = "{$element['file']}:{$element['line']}";
+ $res .= <<<EOT
+<tr>
+ <td class='stacktraceno'>
+ $index
+ </td>
+ <td class='stacktracefunction'>
+ $function
+ </td>
+ <td class='stacktracelocation'>
+ $location
+ </td>
+</tr>
+EOT;
+ }
+ $res .= "</table>\n";
+ return $res;
}
/**
Modified: trunk/Debug/src/structs/debug_structure.php
==============================================================================
--- trunk/Debug/src/structs/debug_structure.php [iso-8859-1] (original)
+++ trunk/Debug/src/structs/debug_structure.php [iso-8859-1] Tue Feb 26
12:32:26 2008
@@ -64,6 +64,18 @@
}
/**
+ * Returns if the given property isset.
+ *
+ * @param string $name
+ * @return bool
+ * @ignore
+ */
+ public function __isset( $name )
+ {
+ return array_key_exists( $name, $this->properties );
+ }
+
+ /**
* Generates string output of the debug messages.
*
* The output generated is each value listed in the form "'key' =>
'value'".
Modified: trunk/Debug/tests/formatters/html_formatter_data_structures.php
==============================================================================
--- trunk/Debug/tests/formatters/html_formatter_data_structures.php
[iso-8859-1] (original)
+++ trunk/Debug/tests/formatters/html_formatter_data_structures.php
[iso-8859-1] Tue Feb 26 12:32:26 2008
@@ -7,6 +7,8 @@
* @package Debug
* @subpackage Tests
*/
+
+require 'input/class.php';
/**
* Class used in the test suite.
@@ -142,6 +144,40 @@
return $time;
}
+ public function getLogStructureWithPhpStacktrace()
+ {
+ $rawTrace = require 'input/stacktrace_php.php';
+ $stacktrace = new ezcDebugPhpStacktraceIterator(
+ $rawTrace,
+ 0,
+ new ezcDebugOptions()
+ );
+ $log = $this->getLogStructure();
+
+ foreach ( $log as $logItem )
+ {
+ $logItem->stackTrace = $stacktrace;
+ }
+ return $log;
+ }
+
+ public function getLogStructureWithXdebugStacktrace()
+ {
+ $rawTrace = require 'input/stacktrace_xdebug.php';
+ $stacktrace = new ezcDebugXdebugStacktraceIterator(
+ $rawTrace,
+ 0,
+ new ezcDebugOptions()
+ );
+ $log = $this->getLogStructure();
+
+ foreach ( $log as $logItem )
+ {
+ $logItem->stackTrace = $stacktrace;
+ }
+ return $log;
+ }
+
protected function mySQLFunction(&$time)
{
$time->startTimer("my query", "html_reporter_test" , "query");
Modified: trunk/Debug/tests/formatters/html_formatter_test.php
==============================================================================
--- trunk/Debug/tests/formatters/html_formatter_test.php [iso-8859-1] (original)
+++ trunk/Debug/tests/formatters/html_formatter_test.php [iso-8859-1] Tue Feb
26 12:32:26 2008
@@ -27,6 +27,40 @@
self::assertEquals( $expected, $out );
}
+ public function testHtmlWithPhpStacktrace()
+ {
+ $html = new ezcDebugHtmlFormatter();
+
+ $struct = new HtmlReporterDataStructures();
+
+ $out = $html->generateOutput(
+ $struct->getLogStructureWithPhpStacktrace(),
+ $struct->getTimeStructure()
+ );
+ // file_put_contents( dirname( __FILE__ ) .
'/output/output_with_php_stacktrace.html', $out );
+ $expected = file_get_contents(
+ dirname( __FILE__ ) . '/output/output_with_php_stacktrace.html'
+ );
+ $this->assertEquals( $expected, $out );
+ }
+
+ public function testHtmlWithXdebugStacktrace()
+ {
+ $html = new ezcDebugHtmlFormatter();
+
+ $struct = new HtmlReporterDataStructures();
+
+ $out = $html->generateOutput(
+ $struct->getLogStructureWithXdebugStacktrace(),
+ $struct->getTimeStructure()
+ );
+ file_put_contents( dirname( __FILE__ ) .
'/output/output_with_xdebug_stacktrace.html', $out );
+ $expected = file_get_contents(
+ dirname( __FILE__ ) . '/output/output_with_xdebug_stacktrace.html'
+ );
+ $this->assertEquals( $expected, $out );
+ }
+
public static function suite()
{
return new PHPUnit_Framework_TestSuite( __CLASS__ );
Added: trunk/Debug/tests/formatters/input/class.php
==============================================================================
--- trunk/Debug/tests/formatters/input/class.php (added)
+++ trunk/Debug/tests/formatters/input/class.php [iso-8859-1] Tue Feb 26
12:32:26 2008
@@ -1,0 +1,74 @@
+<?php
+
+class DebugTestFormatterClass
+{
+ public function fooBar()
+ {
+ $test = 23;
+ $this->fooBaz(
+ $test,
+ array(
+ 23.0,
+ fopen( __FILE__, 'r' ),
+ 1,
+ 2,
+ array(
+ 'a',
+ 'b',
+ true,
+ new DebugTestFormatterContainerClass()
+ ),
+ array(
+ 23.42,
+ false,
+ null,
+ 'test',
+ array(
+ 'deep',
+ 'deeper',
+ 'deepest'
+ )
+ )
+ )
+ );
+ }
+
+ private function fooBaz( $a, $b, $c = true )
+ {
+ self::testStatic();
+ }
+
+ protected static function testStatic()
+ {
+ file_put_contents( 'php_stacktrace.php', var_export(
debug_backtrace(), true ) );
+ // file_put_contents( 'xdebug_stacktrace.php', var_export(
xdebug_get_function_stack(), true ) );
+ }
+
+ public static function __set_state( array $state )
+ {
+ return new DebugTestFormatterClass();
+ }
+}
+
+class DebugTestFormatterContainerClass extends stdClass
+{
+ public static function __set_state( array $state )
+ {
+ $obj = new DebugTestFormatterContainerClass();
+ foreach ( $state as $key => $val )
+ {
+ $obj->$key = $val;
+ }
+ return $obj;
+ }
+}
+
+function testDebugFormatter( $bar )
+{
+ $foo = new DebugTestFormatterClass();
+ $foo->fooBar();
+}
+
+// testDebugFormatter( 'test' );
+
+?>
Propchange: trunk/Debug/tests/formatters/input/class.php
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Debug/tests/formatters/input/stacktrace_php.php
==============================================================================
--- trunk/Debug/tests/formatters/input/stacktrace_php.php (added)
+++ trunk/Debug/tests/formatters/input/stacktrace_php.php [iso-8859-1] Tue Feb
26 12:32:26 2008
@@ -1,0 +1,85 @@
+<?php
+
+return array (
+ 0 =>
+ array (
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 38,
+ 'function' => 'testStatic',
+ 'class' => 'DebugTestFormatterClass',
+ 'type' => '::',
+ 'args' =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 33,
+ 'function' => 'fooBaz',
+ 'class' => 'DebugTestFormatterClass',
+ 'object' =>
+ DebugTestFormatterClass::__set_state(array(
+ )),
+ 'type' => '->',
+ 'args' =>
+ array (
+ 0 => 23,
+ 1 =>
+ array (
+ 0 => 23,
+ 1 => NULL,
+ 2 => 1,
+ 3 => 2,
+ 4 =>
+ array (
+ 0 => 'a',
+ 1 => 'b',
+ 2 => true,
+ 3 =>
+ DebugTestFormatterContainerClass::__set_state(array(
+ )),
+ ),
+ 5 =>
+ array (
+ 0 => 23.42,
+ 1 => false,
+ 2 => NULL,
+ 3 => 'test',
+ 4 =>
+ array (
+ 0 => 'deep',
+ 1 => 'deeper',
+ 2 => 'deepest',
+ ),
+ ),
+ ),
+ ),
+ ),
+ 2 =>
+ array (
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 69,
+ 'function' => 'fooBar',
+ 'class' => 'DebugTestFormatterClass',
+ 'object' =>
+ DebugTestFormatterClass::__set_state(array(
+ )),
+ 'type' => '->',
+ 'args' =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 72,
+ 'function' => 'testDebugFormatter',
+ 'args' =>
+ array (
+ 0 => 'test',
+ ),
+ ),
+);
+
+?>
Propchange: trunk/Debug/tests/formatters/input/stacktrace_php.php
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Debug/tests/formatters/input/stacktrace_xdebug.php
==============================================================================
--- trunk/Debug/tests/formatters/input/stacktrace_xdebug.php (added)
+++ trunk/Debug/tests/formatters/input/stacktrace_xdebug.php [iso-8859-1] Tue
Feb 26 12:32:26 2008
@@ -1,0 +1,58 @@
+<?php
+
+return array (
+ 0 =>
+ array (
+ 'function' => '{main}',
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 0,
+ 'params' =>
+ array (
+ ),
+ ),
+ 1 =>
+ array (
+ 'function' => 'testDebugFormatter',
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 72,
+ 'params' =>
+ array (
+ 'bar' => '\'test\'',
+ ),
+ ),
+ 2 =>
+ array (
+ 'function' => 'fooBar',
+ 'class' => 'DebugTestFormatterClass',
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 69,
+ 'params' =>
+ array (
+ ),
+ ),
+ 3 =>
+ array (
+ 'function' => 'fooBaz',
+ 'class' => 'DebugTestFormatterClass',
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 33,
+ 'params' =>
+ array (
+ 'a' => '23',
+ 'b' => 'array (0 => 23, 1 => resource(5) of type (stream), 2 => 1, 3 =>
2, 4 => array (0 => \'a\', 1 => \'b\', 2 => TRUE, 3 => class stdClass { ... }),
5 => array (0 => 23.42, 1 => FALSE, 2 => NULL, 3 => \'test\', 4 => array
(...)))',
+ 'c' => 'NULL',
+ ),
+ ),
+ 4 =>
+ array (
+ 'function' => 'testStatic',
+ 'class' => 'DebugTestFormatterClass',
+ 'file' => '/home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php',
+ 'line' => 38,
+ 'params' =>
+ array (
+ ),
+ ),
+);
+
+?>
Propchange: trunk/Debug/tests/formatters/input/stacktrace_xdebug.php
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/Debug/tests/formatters/output/output_with_php_stacktrace.html
==============================================================================
--- trunk/Debug/tests/formatters/output/output_with_php_stacktrace.html (added)
+++ trunk/Debug/tests/formatters/output/output_with_php_stacktrace.html
[iso-8859-1] Tue Feb 26 12:32:26 2008
@@ -1,0 +1,178 @@
+<div class="ezc-debug-output"><table class='log'>
+<tr class='debugheader'>
+ <td class='source'>
+ <span class='verbosity1'>1: content::sql</span>
+ </td>
+ <td class='date'>2008-02-01 12:49:51 +0000</td>
+</tr>
+<tr class='debugbody'>
+ <td colspan='2'>SELECT contentobject_id, login, email, password_hash,
password_hash_type
+ FROM ezuser
+ WHERE contentobject_id='10'</td>
+</tr><tr class='debugstacktrace'><td colspan='2'><table class='stacktrace'>
+<tr>
+ <td class='stacktraceno'>
+ #
+ </td>
+ <td class='stacktracefunction'>
+ Function
+ </td>
+ <td class='stacktracelocation'>
+ Location
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 0
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::testStatic()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:38
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 1
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBaz(23, array (0 => 23, 1 => NULL, 2 => 1,
3 => 2, 4 => array (0 => 'a', 1 => 'b', 2 => TRUE, 3 => class
DebugTestFormatterContainerClass { }), 5 => array (0 => 23.42, 1 => FALSE, 2
=> NULL, 3 => 'test', 4 => array (0 => 'deep', 1 => 'deeper', 2 => 'deepest'))))
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:33
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 2
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBar()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:69
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 3
+ </td>
+ <td class='stacktracefunction'>
+ testDebugFormatter('test')
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:72
+ </td>
+</tr></table>
+</td></tr><tr class='debugheader'>
+ <td class='source'>
+ <span class='verbosity2'>2: content::sql</span>
+ </td>
+ <td class='date'>2008-02-01 12:49:51 +0000</td>
+</tr>
+<tr class='debugbody'>
+ <td colspan='2'>SELECT DISTINCT ezdiscountrule.id
+ FROM ezdiscountrule,
+ ezuser_discountrule
+ WHERE ezuser_discountrule.contentobject_id = '10' AND
+ezuser_discountrule.discountrule_id = ezdiscountrule.id</td>
+</tr><tr class='debugstacktrace'><td colspan='2'><table class='stacktrace'>
+<tr>
+ <td class='stacktraceno'>
+ #
+ </td>
+ <td class='stacktracefunction'>
+ Function
+ </td>
+ <td class='stacktracelocation'>
+ Location
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 0
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::testStatic()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:38
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 1
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBaz(23, array (0 => 23, 1 => NULL, 2 => 1,
3 => 2, 4 => array (0 => 'a', 1 => 'b', 2 => TRUE, 3 => class
DebugTestFormatterContainerClass { }), 5 => array (0 => 23.42, 1 => FALSE, 2
=> NULL, 3 => 'test', 4 => array (0 => 'deep', 1 => 'deeper', 2 => 'deepest'))))
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:33
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 2
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBar()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:69
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 3
+ </td>
+ <td class='stacktracefunction'>
+ testDebugFormatter('test')
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:72
+ </td>
+</tr></table>
+</td></tr></table>
+<table class='accumulator'>
+ <tr>
+ <th>Timings</th>
+ <th>Elapsed</th>
+ <th>Percent</th>
+ <th>Count</th>
+ <th>Average</th>
+ </tr>
+ <tr class='group-header'>
+ <th colspan='5'>html_reporter_test</th>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>my query</td>
+ <td class='tp-elapsed'>0.00005</td>
+ <td class='tp-percent'>11.09 %</td>
+ <td class='tp-count'>3</td>
+ <td class='tp-average'>0.00002</td>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>replace mysql</td>
+ <td class='tp-elapsed'>0.00003</td>
+ <td class='tp-percent'>6.94 %</td>
+ <td class='tp-count'>2</td>
+ <td class='tp-average'>0.00002</td>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>Script</td>
+ <td class='tp-elapsed'>0.00038</td>
+ <td class='tp-percent'>81.97 %</td>
+ <td class='tp-count'>1</td>
+ <td class='tp-average'>0.00038</td>
+ </tr>
+ <tr class='totals'>
+ <th class='tp-total'>Total:</th>
+ <td class='tp-elapsed'>0.00046</td>
+ <td class='tp-percent'>100.00 %</td>
+ <td class='tp-count'>6</td>
+ <td class='tp-average'>0.00008</td>
+ </tr>
+ <tr class='group-header'>
+ <th colspan='5'>content</th>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>Timing module</td>
+ <td class='tp-elapsed'>0.00032</td>
+ <td class='tp-percent'>100.00 %</td>
+ <td class='tp-count'>1</td>
+ <td class='tp-average'>0.00032</td>
+ </tr>
+</table></div>
Added: trunk/Debug/tests/formatters/output/output_with_xdebug_stacktrace.html
==============================================================================
--- trunk/Debug/tests/formatters/output/output_with_xdebug_stacktrace.html
(added)
+++ trunk/Debug/tests/formatters/output/output_with_xdebug_stacktrace.html
[iso-8859-1] Tue Feb 26 12:32:26 2008
@@ -1,0 +1,198 @@
+<div class="ezc-debug-output"><table class='log'>
+<tr class='debugheader'>
+ <td class='source'>
+ <span class='verbosity1'>1: content::sql</span>
+ </td>
+ <td class='date'>2008-02-01 12:49:51 +0000</td>
+</tr>
+<tr class='debugbody'>
+ <td colspan='2'>SELECT contentobject_id, login, email, password_hash,
password_hash_type
+ FROM ezuser
+ WHERE contentobject_id='10'</td>
+</tr><tr class='debugstacktrace'><td colspan='2'><table class='stacktrace'>
+<tr>
+ <td class='stacktraceno'>
+ #
+ </td>
+ <td class='stacktracefunction'>
+ Function
+ </td>
+ <td class='stacktracelocation'>
+ Location
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 0
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::testStatic()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:38
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 1
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBaz(23, array (0 => 23, 1 => resource(5)
of type (stream), 2 => 1, 3 => 2, 4 => array (0 => 'a', 1 => 'b', 2 => TRUE, 3
=> class stdClass { ... }), 5 => array (0 => 23.42, 1 => FALSE, 2 => NULL, 3 =>
'test', 4 => array (...))), NULL)
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:33
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 2
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBar()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:69
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 3
+ </td>
+ <td class='stacktracefunction'>
+ testDebugFormatter('test')
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:72
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 4
+ </td>
+ <td class='stacktracefunction'>
+ {main}()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:0
+ </td>
+</tr></table>
+</td></tr><tr class='debugheader'>
+ <td class='source'>
+ <span class='verbosity2'>2: content::sql</span>
+ </td>
+ <td class='date'>2008-02-01 12:49:51 +0000</td>
+</tr>
+<tr class='debugbody'>
+ <td colspan='2'>SELECT DISTINCT ezdiscountrule.id
+ FROM ezdiscountrule,
+ ezuser_discountrule
+ WHERE ezuser_discountrule.contentobject_id = '10' AND
+ezuser_discountrule.discountrule_id = ezdiscountrule.id</td>
+</tr><tr class='debugstacktrace'><td colspan='2'><table class='stacktrace'>
+<tr>
+ <td class='stacktraceno'>
+ #
+ </td>
+ <td class='stacktracefunction'>
+ Function
+ </td>
+ <td class='stacktracelocation'>
+ Location
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 0
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::testStatic()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:38
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 1
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBaz(23, array (0 => 23, 1 => resource(5)
of type (stream), 2 => 1, 3 => 2, 4 => array (0 => 'a', 1 => 'b', 2 => TRUE, 3
=> class stdClass { ... }), 5 => array (0 => 23.42, 1 => FALSE, 2 => NULL, 3 =>
'test', 4 => array (...))), NULL)
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:33
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 2
+ </td>
+ <td class='stacktracefunction'>
+ DebugTestFormatterClass::fooBar()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:69
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 3
+ </td>
+ <td class='stacktracefunction'>
+ testDebugFormatter('test')
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:72
+ </td>
+</tr><tr>
+ <td class='stacktraceno'>
+ 4
+ </td>
+ <td class='stacktracefunction'>
+ {main}()
+ </td>
+ <td class='stacktracelocation'>
+ /home/dotxp/dev/PHP/actual/ezcomponents/trunk/backtrace.php:0
+ </td>
+</tr></table>
+</td></tr></table>
+<table class='accumulator'>
+ <tr>
+ <th>Timings</th>
+ <th>Elapsed</th>
+ <th>Percent</th>
+ <th>Count</th>
+ <th>Average</th>
+ </tr>
+ <tr class='group-header'>
+ <th colspan='5'>html_reporter_test</th>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>my query</td>
+ <td class='tp-elapsed'>0.00005</td>
+ <td class='tp-percent'>11.09 %</td>
+ <td class='tp-count'>3</td>
+ <td class='tp-average'>0.00002</td>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>replace mysql</td>
+ <td class='tp-elapsed'>0.00003</td>
+ <td class='tp-percent'>6.94 %</td>
+ <td class='tp-count'>2</td>
+ <td class='tp-average'>0.00002</td>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>Script</td>
+ <td class='tp-elapsed'>0.00038</td>
+ <td class='tp-percent'>81.97 %</td>
+ <td class='tp-count'>1</td>
+ <td class='tp-average'>0.00038</td>
+ </tr>
+ <tr class='totals'>
+ <th class='tp-total'>Total:</th>
+ <td class='tp-elapsed'>0.00046</td>
+ <td class='tp-percent'>100.00 %</td>
+ <td class='tp-count'>6</td>
+ <td class='tp-average'>0.00008</td>
+ </tr>
+ <tr class='group-header'>
+ <th colspan='5'>content</th>
+ </tr>
+ <tr class='group'>
+ <td class='tp-name'>Timing module</td>
+ <td class='tp-elapsed'>0.00032</td>
+ <td class='tp-percent'>100.00 %</td>
+ <td class='tp-count'>1</td>
+ <td class='tp-average'>0.00032</td>
+ </tr>
+</table></div>
--
svn-components mailing list
[email protected]
http://lists.ez.no/mailman/listinfo/svn-components