source: trunk/bookmarks/debug.inc.php @ 295

Revision 295, 3.8 KB checked in by Andreas.rindler, 3 years ago (diff)

Reverted changes introduced in [292] and [293] that had overwritten previous bug fixes.

Line 
1<?php
2// Turn debugging on
3define('SCUTTLE_DEBUG',false);
4
5// generic debugging function
6// Sample:
7//     pc_debug(__FILE__, __LINE__, "This is a debug message.");
8
9function pc_debug($file, $line, $message) {
10    if (defined('SCUTTLE_DEBUG') && SCUTTLE_DEBUG) {
11       
12        file_put_contents(dirname(__file__).'/../w/images/debug.log',time().": [$file][$line]: $message",FILE_APPEND);
13       
14        //error_log("---DEBUG-". $sitename .": [$file][$line]: $message");
15    } else {
16        #error_log("SCUTTLE_DEBUG disabled");
17    }
18}
19
20/**
21* Colorized var_dump()
22*
23* @author       Clemens Gutweiler <cg@webmaking.de>
24* @date         2001-08-01
25* @access       public
26* @version      0.1
27*
28*/
29function var_dumpc( $par ) {
30        /**
31    * Get Output from var_dump();
32    */
33        ob_start();
34        var_dump($par);
35        $var_dump = ob_get_contents();
36    ob_end_clean();
37        /**
38    * Font Color
39    */
40    $c_type                     =       '<font%%%%%%%%%%color="#FF8000">';
41    $c_phpnamespace     =       '<font%%%%%%%%%%color="#007700">';
42    $c_string           =       '<font%%%%%%%%%%color="#DD0000">';
43    $c_integer          =       '<font%%%%%%%%%%color="#0000BB">';
44    $c_cursor           =       '<font%%%%%%%%%%color="#0000FF">';
45    $c_close            =       '</font>';
46        /**
47    * Format Dump
48    */
49    $var_dump = str_replace("\n", "<br>\n", $var_dump);
50    // string(5) "wm_db"
51    $var_dump = preg_replace('/(.*?)\((.*?)\) \"(.*?)\"/ms', "\\1(\\2) ".$c_string.'"\\3"'.$c_close, $var_dump);
52    // Type             string(9)
53    $var_dump = preg_replace('/([a-zA-z]*)(\([a-zA-Z0-9-]*\))/', $c_type."\\1".$c_close."\\2", $var_dump);
54    // (*)
55    $var_dump = preg_replace("/\(([0-9-]*)\)/", "(".$c_integer."\\1".$c_close.")", $var_dump);
56    $var_dump = preg_replace("/\(([a-zA-Z]*)\)/", "(".$c_string."\\1".$c_close.")", $var_dump);
57    // Key              ["classname"]
58    $var_dump = preg_replace('/\[\"([_a-zA-Z]*)\"\]/', '['.$c_phpnamespace.'"\\1"'.$c_close.']', $var_dump);
59    // =>
60    $var_dump = preg_replace('/(=>)/', $c_cursor.'\\1'.$c_close, $var_dump);
61        // Whitespace
62    $var_dump = str_replace(" ", "&nbsp;", $var_dump);
63    $var_dump = '<br><font size="2" face="Courier New, Fixedsys">'.$var_dump.'</font><br>';
64    $var_dump = str_replace("%%%%%%%%%%", " ", $var_dump);
65        /**
66    * Print Output
67    */
68    echo $var_dump;
69}
70
71/*
72nicely formatted output from php's debug_backtrace()
73* */
74function backtrace(){
75    $output = "<div style='text-align: left; font-family: monospace;'>\n";
76    $output .= "<b>Backtrace:</b><br />\n";
77    $backtrace = debug_backtrace();
78
79    foreach ($backtrace as $bt) {
80        $args = '';
81        foreach ($bt['args'] as $a) {
82            if (!empty($args)) {
83                $args .= ', ';
84            }
85            switch (gettype($a)) {
86            case 'integer':
87            case 'double':
88                $args .= $a;
89                break;
90            case 'string':
91                $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? '...' : '');
92                $args .= "\"$a\"";
93                break;
94            case 'array':
95                $args .= 'Array('.count($a).')';
96                break;
97            case 'object':
98                $args .= 'Object('.get_class($a).')';
99                break;
100            case 'resource':
101                $args .= 'Resource('.strstr($a, '#').')';
102                break;
103            case 'boolean':
104                $args .= $a ? 'True' : 'False';
105                break;
106            case 'NULL':
107                $args .= 'Null';
108                break;
109            default:
110                $args .= 'Unknown';
111            }
112        }
113        $output .= "<br />\n";
114        $output .= "<b>file:</b> {$bt['line']} - {$bt['file']}<br />\n";
115        $output .= "<b>call:</b> {$bt['class']}{$bt['type']}{$bt['function']}($args)<br />\n";
116    }
117    $output .= "</div>\n";
118    return $output;
119}
120
121?>
Note: See TracBrowser for help on using the repository browser.