Besserer Debug-Modus (Frontend-Debugging) inkl. Vorschlag
Verfasst: Di 22. Mai 2007, 13:05
Hallo Leute,
ich schlage mich ab und an mit diesen eval() Fehlern rum, und bin absolut unglücklich darüber, das man beim Debuggen (selbst mit frontend-ausgabe) immer einen unnötigen Schritt (kopieren des Quelltextes aus dieser mini-Textarea in einen externen Editor) machen muss, da man doch meist lediglich den Code sichten muss um den Fehler zu finden!
Nun habe ich ein schönes Script gefunden (http://www.yubb.de/artikel520.html?PHPS ... e0fcc9cf55), das den Quelltext mit Zeilennummern und farblichem Highligting versieht.
Anbei mal ein kleiner Screenshot:
Was haltet Ihr davon, das in Contenido mit aufzunehmen.. ggf. kann man ja in der config.misc.php optional wählen, ob man die textbox oder das highlighting haben möchte.
Hab auch schon gesehen, das der Debugmodus an dieser Stelle etwas unvorteilhaft programmiert ist, da in nahezu jede Datei folgendes enthalten ist um die Textbox zu erzeugen:
Besser wäre es, wenn zukünftig der Debug-Teil in einer extra Funktion ausgelagert werden würde, so muss man nicht jede Datei ändern, wenn man den Debugmodus optimieren möchte.
Könnte an der oben dargestellten Codestelle etwa so aussehen:
Zwecks Highlighting könnte man dann direkt folgende Funktion nutzen:
PS: Übrigens wäre es auch toll, wenn man den Debugmodus direkt im Adminbereich (ggf. über eine Systemvariable (Administration >> System >> Systemeinstellungen) an und ausschalten könnte.
Für das ändern der Zeile in könnte man ja - zumindest unter Linux ein kleines Script schreiben. Anregungen sind hier gerne gesehen.
Zudem bin ich mir noch nicht sicher, wo man die Funktion für das highlighting (also debug_output) am besten unterbringt. Habt Ihr ne Idee?
ich schlage mich ab und an mit diesen eval() Fehlern rum, und bin absolut unglücklich darüber, das man beim Debuggen (selbst mit frontend-ausgabe) immer einen unnötigen Schritt (kopieren des Quelltextes aus dieser mini-Textarea in einen externen Editor) machen muss, da man doch meist lediglich den Code sichten muss um den Fehler zu finden!
Nun habe ich ein schönes Script gefunden (http://www.yubb.de/artikel520.html?PHPS ... e0fcc9cf55), das den Quelltext mit Zeilennummern und farblichem Highligting versieht.
Anbei mal ein kleiner Screenshot:
Was haltet Ihr davon, das in Contenido mit aufzunehmen.. ggf. kann man ja in der config.misc.php optional wählen, ob man die textbox oder das highlighting haben möchte.
Hab auch schon gesehen, das der Debugmodus an dieser Stelle etwas unvorteilhaft programmiert ist, da in nahezu jede Datei folgendes enthalten ist um die Textbox zu erzeugen:
Code: Alles auswählen
if ($cfg["debug"]["codeoutput"])
{
echo "<textarea>".htmlspecialchars($code)."</textarea>";
}
Könnte an der oben dargestellten Codestelle etwa so aussehen:
Code: Alles auswählen
if ($cfg["debug"]["codeoutput"])
{
echo debug_output($code);
}
Code: Alles auswählen
function debug_output($string)
{
/* Variable $cfg["debug"]["codeoutput_type"] aus "config.misc.php"
codeoutput_type 1 = highlight
codeoutput_type 2 = textbox*/
if($GLOBALS["cfg"]["debug"]["codeoutput_type"]=="1")
{
$Line = explode("\n",$string); //Zeilen einzeln in ein Array Laden
for($i=1;$i<=count($Line);$i++) //Zeilennummern in einer Variablen Speichern
{
$line .= " ".$i." <br>";
}
ob_start(); /* Über einen Ausgabepuffer die Ausgabe von highlight_string abfangen und einer Variablen zuweisen */
highlight_string($string);
$Code=ob_get_contents();
ob_end_clean();
// Hier wird die Ausgabe in einer header Variable gespeichert
$header='<table border="0" cellpadding="0" cellspacing="0" width="95%" style="border-style: solid; border-width:1px; border-color: white black black white">
<tr>
<td width="100%" colspan="2" style="border-style: solid; border-width:1px; border-color: white; background-color: #99ccff; font-family:Arial; color:white; font-weight:bold;">Php-Code:</td>
</tr>
<tr>
<td width="3%" valign="top" style="background-color: #99ccff; border-style: solid; border-width:1px; border-color: white;"><code>'.$line.'</code></td>
<td width="97%" valign="top" style="background-color: white;"><div style="white-space: nowrap; overflow: auto;"><code>';
// Hier wird der gehighlightete Code und die schließenden Html Tags einer Variablen zugewiesen.
$footer=$Code.'</div></code></td>
</tr>
</table>';
// Hier werden beide Variablen zurückgegeben.
return $header.$footer;
}
elseif($GLOBALS["cfg"]["debug"]["codeoutput_type"]=="2")
{
// Alte Textbox fürs debugging... jedoch etwas größer, damit man was sehen kann...
$textbox = "<textarea rows=\"50\" cols=\"50\">".htmlspecialchars($code)."</textarea>";
return $textbox;
}
}
Für das ändern der Zeile
Code: Alles auswählen
echo "<textarea>".htmlspecialchars($code)."</textarea>";
Code: Alles auswählen
echo debug_output($code);
Zudem bin ich mir noch nicht sicher, wo man die Funktion für das highlighting (also debug_output) am besten unterbringt. Habt Ihr ne Idee?