Ankündigung

Einklappen
Keine Ankündigung bisher.

3,17: Ein X für ein U

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

  • 3,17: Ein X für ein U

    3,17:
    Da Programmierer auch nur Menschen aus Fleisch und Blut sind, machen diese auch Fehler. Diese Fehler können ganz unterschiedlich aussehen und sind dementsprechend auch unterschiedlich schwer zu finden und zu beheben. Einfache Syntaxfehler, wie ein vergessenes Semikolon, sind meist schnell gefunden, wenn es sich jedoch um einen Fehler in der Programmlogik handelt oder man in eine Falle der Programmiersprache tappt, dann wird das ganze schon schwieriger. Gerade bei größeren Projekten die durch ihre objektorientierte Struktur sehr verzweigt sind, gestaltet sich die Suche schwierig. Allein die fehlerhafte Stelle im Code zu lokalisieren dauert also erst mal und dann geht’s los: Variablen ausgeben, Parameter finden, Daten analysieren, das Programm vorzeitig sterben lassen, und und und.

    Als PHP-Entwickler kommt noch hinzu das die Debug-Ausgaben noch vor den Headern kommen können oder aber mitten im HTML-Quelltext und alles ein unschön formatierter Haufen.

    Xdebug soll hier helfen: als PHP-Erweiterung greift Xdebug direkt am Webserver ein um dem Entwickler das Leben zu vereinfachen.

    Installation und Konfiguration
    Eine viel verwendete Software namens XAMPP hat hier für uns schon alles vorbereitet, wir müssen es nur noch aktivieren. Dazu gehen wir in die entsprechende php.ini und entfernen die Kommentarzeichen für die Xdebug Extension und ggf. bei den entsprechenden Einstellungen im Bereich [xdebug]. Eine Übersicht der Einstellungen findet man hier http://www.xdebug.org/docs/all_settings.

    Benutzung
    Je nach Einstellungen, sollten von PHP produzierte Fehlermeldungen und var_dumps nun in aufgehübschtem HTML erscheinen und einiges mehr an Informationen liefern.
    Für einige wichtige Features wird eine entsprechende IDE benötigt, die in der Lage ist mit Xdebug zu kommunizieren. Hier würden sich Beispielsweise NetBeans und Eclipse anbieten. Diese müssen dann entsprechend konfiguriert werden um die Xdebug Features nutzen zu können.

    Features

    Konfigurierbare var_dumps
    Xdebug bietet die Möglichkeit die Ausgabe der var_dump-Funktion zu konfigurieren. Dabei wird die Ausgabe mit HTML deutlich lesbarer und durch Einstellungen wie angezeigte Objekt- & Array-Tiefe oder maximal angezeigte Stringlänge, kann das Ganze noch den persönlichen Bedürfnissen angepasst werden.

    Stack Traces
    PHP-Fehlermeldungen sagen einem zwar in welcher Datei und welcher Zeile ein Fehler stattgefunden hat, jedoch wie der Weg durch Objekte, Funktionen, etc. abgelaufen ist, das sagt PHP nicht ohne weiteres. Die Stack Traces von Xdebug geben uns Auskunft über den Weg zum Fehler. Darin sind Informationen über Funktions- / Methodenaufrufe und deren Parameter enthalten. Das hilft besonders dann, wenn ein Fehler nur in einem bestimmten Szenario auftritt oder wie der User sagen würde „manchmal“. Zusätzlich kann man sich noch Informationen wie den aktuellen Inhalt der superglobalen Variablen anzeigen lassen.

    Remote Debugging (IDE nötig)
    Ein Feature was aus vielen anderen Programmiersprachen und IDEs bekannt ist, sind Haltepunkte. Mit Xdebug lässt sich eine PHP-Applikation von der IDE aus starten und steuern. So kann mal eben überprüft werden ob ein Zweig der Applikation überhaupt ausgeführt wird oder ob dies durch eine vorangegangene Bedingung nicht der Fall ist. Die betroffene Bedingung lässt sich dann auch schnell analysieren und das ganze ohne einen Eingriff in den Code. Mit Xdebug ist es ebenfalls Möglich den Code Zeile für Zeile abzuarbeiten. Setzt man einen Haltepunkt, dann nützt dieser natürlich nur etwas, wenn man auch entsprechende Laufzeitinformationen bekommt, was uns zum nächsten Feature führt.

    Laufzeitinformationen (IDE nötig)
    Befindet man sich an einem Punkt eines Programmes im Debug-Modus, so benötigt man Informationen über den aktuellen Zustand um einen Fehler zu lokalisieren. Die nützlichsten Informationen sind hierbei Variableninhalte. Hält Xdebug an einem Punkt, so ist die IDE in der Lage alle Variablen samt Inhalt anzuzeigen. Dabei unterscheidet sich dies in drei wichtigen Punkten vom debuggen mit var_dump. Erstens hat man die Information welche Variablen alle Verfügbar sind, also sowohl lokal als auch global und superglobal, zweitens muss man den vorhanden Code nicht berühren um an diese Informationen zu kommen und drittens ist man sogar in der Lage diese Inhalte zu ersetzen ohne in den Code einzugreifen. Letzteres bietet einem die Möglichkeit zu testen, wie das Programm mit einem anderen Variableninhalt reagiert.

    Xdebug bietet noch einige weitere Features an, sowie Funktionen um Xdebug zu steuern und an dessen Informationen zu kommen. Das ganze ist hier http://www.xdebug.org/docs/ Dokumentiert.

    Der Nikolaus und seine fleissigen Helfer wünschen euch eine erfolgreiche Fehlersuche.

Lädt...
X