Ankündigung

Einklappen
Keine Ankündigung bisher.

Sauber formatierte Debug-Ausgabe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gast-Avatar
    Ein Gast erstellte das Thema Sauber formatierte Debug-Ausgabe.

    Sauber formatierte Debug-Ausgabe

    Hallo zusammen,

    ich grüble gerade an einer bestmöglichen Lösung für eine sauber formatiert Debug-Ausgabe.

    Mein Grundgedanke ist, am Anfang eines Scripts eine konstante auf true zu setzen, was dann am Ende des Scripts zum includen einer debug.inc.php führt.

    In dieser werden diverse Abfragen getätigt und vorhandene Variablen, Arrays, etc. ausgegeben, die ich immer wieder verwende. (macht das überhaupt sinn so?

    Nun stellt sich die Frage wie ich diese Ausgabe möglichst einfach "gut lesbar" machen kann. print_r ansich liefert ja einen relativ schlecht lesbaren output.

    Evtl. gibt's auch dafür schon fertige Lösungen?

    Danke für Eure Hilfe!

  • Gast-Avatar
    Ein Gast antwortete
    --enable/disable-debug bezieht sich auf etwas bisschen anderes, nämlich auf php selbst.
    Das ist ja auch "nur" ein Programm und kann auch debugged werden.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    heute Abend entdeckt und eben mal getestet... nice:
    http://www.atomar.de/public/code/deb...r=1&name=dipsy

    Ein codeunabhängiger Debugger ist immer besser als Codeänderungen (printf-debugger-Hölle).
    http://php.net/debugger
    der will bei mir nicht - mein aktuell eingesetztes PHP auf dem dev-server ist mit --disable-debug compiled, warum auch immer

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ein codeunabhängiger Debugger ist immer besser als Codeänderungen (printf-debugger-Hölle).
    http://php.net/debugger

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    PHP-Code:
    <?php
    /**
     * transforms a path by replacing backslashes with slashes and
     * adding a closing slash
     */
    function validatePath($path)
    {
        
    $path trim($path);
        
    $path realpath($path);
        
    $path str_replace('\\''/'$path);
        
    // is the last char a slash?
        
    if (strrpos($path'/') != strlen($path) - 1) {
            
    $path .= '/';
        }
        return 
    $path;
    }

    // this file's position depending on the project root
    define('SELF',             '/..'); // use an empty string if this file lies in the project root
    define('ROOT',             validatePath($_SERVER['DOCUMENT_ROOT']));
    define('PROJECT_REL',      str_replace(ROOT''validatePath(dirname(__FILE__).SELF)));
    define('PROJECT',          ROOT.PROJECT_REL);
    define('INCLUDES_REL',     'includes/');
    define('PROJECT_INCLUDES'PROJECT.INCLUDES_REL);
    define('INCLUDES',         validatePath(ROOT.'../'.INCLUDES_REL));
    define('TEMPLATE_REL',     'tpl/');
    define('TEMPLATE',         PROJECT.TEMPLATE_REL);
    define('CSS_REL',          'css/');
    define('CSS',              PROJECT.CSS_REL);
    define('JAVASCRIPT_REL',   'js/');
    define('JAVASCRIPT',       PROJECT.JAVASCRIPT_REL);

    define('WEB',              '/'.PROJECT_REL);
    define('WWW',              'http://'.$_SERVER['HTTP_HOST'].WEB);

    define('USE_PEAR'true);
    define('DEBUG_ON'true);

    set_include_path(
        
    get_include_path()  .PATH_SEPARATOR.
        
    INCLUDES            .PATH_SEPARATOR.
        
    PROJECT_INCLUDES);
    if (
    USE_PEAR)
        
    set_include_path(get_include_path().PATH_SEPARATOR.validatePath(ROOT.'../PEAR/'));
    ?>
    Momentan nur lokal getestet, müsste online auch funktionieren, auf Schlund wohl angepasst werden.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Hi ihr beiden,

    immer wieder die selben von denen man hier brauchbare Antworten kriegt

    Vielen Dank dafür.

    Erfordert aber natürlich ein wenig Einarbeitung.
    besser jetzt als später / nie

    Einen Kommentar schreiben:


  • Corvin
    antwortet
    Vielleicht ist das hier ja was für dich:
    http://xdebug.org/

    Erfordert aber natürlich ein wenig Einarbeitung.

    Einen Kommentar schreiben:


  • Zergling-new
    antwortet
    ich habe ne Funktion debug():

    PHP-Code:
    <?php
    define
    ('DEBUG_PRINTR'1);
    define('DEBUG_VARDUMP'2);
    define('DEBUG_VAREXPORT'3);

    function 
    debug($var$output DEBUG_PRINTR$pre true)
    {
      if (
    $pre) {
        print 
    '</td></tr></table>'// manchmal verschwinden Debug-Ausgaben in Tabellenoutput.
        
    print '<pre>';
      }
      switch (
    $output) {
      case 
    DEBUG_VARDUMP:
        
    var_dump($var);
        break;
      case 
    DEBUG_VAREXPORT:
        
    var_export($var);
        break;
      case 
    DEBUG_PRINTR:
      default:
        
    print_r($var);
      }
      if (
    $pre) {
        print 
    '</pre>';
      }
    }
    ?>
    Meine DB-Klasse hat außerdem ne report() Methode, die gibt alle Methodenaufrufe mit Argumentenliste aus.

    PHP-Code:
    <?php
    $db 
    singleton('Database');
    $db->report();
    ?>

    Einen Kommentar schreiben:

Lädt...
X