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

  • 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!


  • #2
    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();
    ?>

    Kommentar


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

      Erfordert aber natürlich ein wenig Einarbeitung.

      Kommentar


      • #4
        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

        Kommentar


        • #5
          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.

          Kommentar


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

            Kommentar


            • #7
              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

              Kommentar


              • #8
                --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.

                Kommentar

                Lädt...
                X