Besserer Debug-Modus (Frontend-Debugging) inkl. Vorschlag

Gesperrt
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Besserer Debug-Modus (Frontend-Debugging) inkl. Vorschlag

Beitrag von rethus » 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:
Bild Bild

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>";
      	}
 
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:

Code: Alles auswählen

		if ($cfg["debug"]["codeoutput"])
      	{
			echo debug_output($code);
      	}
 
Zwecks Highlighting könnte man dann direkt folgende Funktion nutzen:

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 .= "&nbsp;".$i."&nbsp;<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;
}
}
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

Code: Alles auswählen

echo "<textarea>".htmlspecialchars($code)."</textarea>";
in

Code: Alles auswählen

echo debug_output($code);
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?
Zuletzt geändert von rethus am Di 22. Mai 2007, 13:36, insgesamt 1-mal geändert.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 22. Mai 2007, 13:24

Bei den eval-Fehlern bei den Modulen kannst Du mit V4.6.15 die Zeilennummern einblenden. Für diesen Bereich gibt es auch immer mal wieder Ideen für Syntaxhighlighting - die letzte gucke ich mir die Tage mal an.
Ü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
Yep. Ist auf der Wunschliste. Und auch, dass man das so aktivieren kann, dass man noch einen Parameter an die URL setzen kann, damit erst die Ausgabe erfolgt (damit nicht jeder Nutzer auf allen Seiten den Code sieht...).

Das andere gucke ich mir mal an, schöne Idee.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Beitrag von rethus » Mo 7. Jul 2008, 09:14

Ich hab mal wieder einen zu checkenden Error.
Nutze derzeit die Version 4.8.6.

Ist das dort nun schon mit drinn, und wie aktiviere ich das debugging?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Besserer Debug-Modus (Frontend-Debugging) inkl. Vorschla

Beitrag von rethus » Do 24. Nov 2011, 12:08

Hat sich hier schon was im CoreCode meinen Anregungen entsprechend verändert?
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Re: Besserer Debug-Modus (Frontend-Debugging) inkl. Vorschla

Beitrag von rethus » Mo 19. Okt 2015, 16:58

Möchte das nochmal aus gegebenen Anlass erneut ins Gespräch bringen.
Could I help you... you can help me... buy me a coffee . (vielen ❤ Dank an: Seelauer, Peanut, fauxxami )

xstable.com: - HighSpeed Hosting, Domains, DomainReselling, Linux-Administration
suther.de: - App-Programierung, High-Performance-Webpages, MicroServices, API-Anbindungen & Erstellung

Software... ein Blick wert: GoogleCalender Eventlist, xst_dynamic_contentType

marcus.gnass_4fb
Beiträge: 87
Registriert: Do 26. Apr 2012, 23:02
Kontaktdaten:

Re: Besserer Debug-Modus (Frontend-Debugging) inkl. Vorschla

Beitrag von marcus.gnass_4fb » Di 20. Okt 2015, 07:42

+1
Ich finde den Vorschlag sehr sinnvoll! Ggf. kann man das ganze noch ein wenig aufhübschen mit einem Button nach dessen Klick sich ein Layer öffnet in dem man den Code in der von dir vorgeschlagenen Form sehen kann. @Freddy: machst du ein Ticket daraus?

Gesperrt