Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Let’s talk about Xdebug

move:elevator
September 19, 2017

Let’s talk about Xdebug

Vortrag zum Meetup der TYPO3 User Group Dresden

move:elevator

September 19, 2017
Tweet

More Decks by move:elevator

Other Decks in Programming

Transcript

  1. Agenda Was ist Xdebug? Vorteile Voraussetzungen Einführung PHP-Konfiguration Einrichtung der

    IDE Toolbar im Browser Troubleshooting Einrichtung Anhang Weitere Einsatzgebiete Alternativen zu Xdebug Weiterführende Links Toolbar am Bsp. des PhpStorms Nutzung per Browser Besonderheiten im Terminal Besonderheiten mit BI Server Nutzung
  2. Einführung Was ist Xdebug? Debugger und Profiler für PHP Ermöglicht

    die Visualisierung des Programmablaufs in der IDE Abb. 1 Abb. 2 Abb. 3
  3. Einführung Warum Xdebug nutzen? Zur Laufzeit kann im Quelltext interagiert

    werden Beschleunigung der Fehlersuche Einfacherer Einstieg in Bestandsprojekte Code-Basis bleibt sauber Abb. 5
  4. Einrichtung Einrichtung der IDE am Beispiel des PhpStorm 2017.2 Globale

    Debugger-Settings in PhpStorm können im Normalfall beibehalten werden Abb. 10
  5. Einrichtung Einrichtung der IDE am Beispiel des PhpStorm 2017.2 Auswahl

    und Konfiguration des Zielservers Abb. 13 Abb. 14 Abb. 15
  6. Einrichtung Toolbar im Browser Verschiedene Toolbars für gängige Browser Möglichkeit

    zur Steuerung der „Debug“- und „Profiling“-Prozesse Abb. 17 Abb. 18
  7. Einrichtung Xdebug logging Ausgabe bei falscher IP: Troubleshooting xdebug.remote_log=/tmp/xdebug.log root@t3ugdd:/tmp#

    tail -f xdebug.log Log opened at 2017-09-09 14:43:45 I: Checking remote connect back address. I: Checking header 'HTTP_X_FORWARDED_FOR'. I: Checking header 'REMOTE_ADDR'. I: Remote address found, connecting to 192.168.34.1:9000. E: Time-out connecting to client. :-( Log closed at 2017-09-09 14:43:45 Abb. 20 Abb. 19
  8. Einrichtung TCP-Dump Netzwerkverkehr auf Port 9000 in beide Richtungen: Netzwerkverkehr

    auf Port 9000 von IDE zu Xdebug: Netzwerkverkehr auf Port 9000 von Xdebug zu IDE: Troubleshooting tcpdump -ni eth1 -n port 9000 -X tcpdump -ni eth1 -n src port 9000 -X tcpdump -ni eth1 -n est port 9000 -X Abb. 25 Abb. 24 Abb. 23
  9. Nutzung Erläuterung der Toolbar am Bsp. des PhpStorm Interaktion innerhalb

    der Applikation: Rerun ‚xdebug‘ -> Neustart der Xdebug-Session Show Execution Point -> Springt zum aktuellen Ausführungspunkt Step Over -> Springt zur nächsten auszuführenden Code-Zeile Step Into -> Springt in die Methode des aktuellen Ausführungspunkt überspringt einfache Methode wie z.B. „getter“ Force Step Into -> Erzwingt den Sprung in die Methode auch wenn diese sonst zu überspringen ist Step Out -> Springt aus der aktuellen Methode heraus, zur nächsten auszuführenden Zeile Run to Cursor -> Setzt die Ausführung des Codes fort, pausiert an der aktuellen Cursorposition Alle Elemente: www.jetbrains.com/help/idea/debug-tool-window.html Allgemeine Steuerung der Ausführung: Debug -> Setzt die Ausführung der Applikation fort Stop -> Bricht die aktuelle Ausführung ab und beendet die Xdebug-Session View Breakpoints -> Zeigt eine Übersicht aller vorhandenen Breakpoints Mute Breakpoints -> Ändert den Status der vorhandenen Breakpoint (aktiviert/deaktiviert) Start Listening for PHP Debug Connections -> Aktiviert das „Lauschen“ auf bzgl. einkommender Daten
  10. Nutzung Erläuterung der Toolbar am Bsp. des PhpStorm Abhängige Breakpoints

    mit Condition Ab PhpStorm 2017.2 möglich [CTRL] + Klick auf vorhandenen Breakpoint Abb. 27
  11. Nutzung Besonderheiten bei der Arbeit mit dem PHP „built-in" Server

    Anpassung der PHP-Konfiguration 
 Aktivieren des „Lauschens“ 
 Keine „Run/Debug Configuration“ notwendig Eintragung der „Hosts“-Datei beachten 
 Zu viele Prozesse gefährden die Performance der Applikationen xdebug.remote_enabled = On xdebug.remote_autostart = On 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost Abb. 34 Abb. 35 Abb. 36
  12. Anhang Weitere Einsatzgebiete Profiling: auffinden von sogenannten „Bottlenecks“ die zu

    Performanceproblemen führen Code Coverage: Prüfung der Testabdeckung im Zusammenspiel mit PHPUnit Abb. 37
  13. Anhang Alternativen zu Xdebug Bekannteste Alternative zu Xdebug ist Zend

    Debugger Unterstützung „out of the box“ von PhpStorm nur als Binary erhältlich Deutlich geringere Verbreitung, da von bekannten IDEs wie Netbeans und Eclipse nicht unterstützt Abb. 38
  14. Abbildungen Abb. 1 PhpStorm: Editor-Ansicht Abb. 2 PhpStorm: Debugger Bereich

    „Variables“ Abb. 3 PhpStorm: Debug-Console Abb. 4 Bitbucket: Ansicht eines Pullrequests Abb. 5 PhpStorm: Editoransicht mit Breakpoint Abb. 6 Auszug aus der PHP-Konfiguration (php.ini) Abb. 7 phpinfo: Zendextension Xdebug Abb. 8 phpinfo: Xdebug version Abb. 9 phpinfo: Xdebug settings Abb. 10 PhpStorm: allgemeine Debugger Settings Abb. 11 PhpStorm: Auswahl neuer Run/Debug Configuration Abb. 12 PhpStrom: PHP Remote Debug Configuration Abb. 13 PhpStrom: Leere Auflistung Deployment Configurations Abb. 14 PhpStrom: Auswahl vorhandener Deployment-Konfiguration Abb. 15 PhpStrom: Abschluss der Deployment-Konfiguration Abb. 16 PhpStrom: Abschluss „Run/Debug Configuration“ Abb. 17 Xdebug-Plugin für Chrome Abb. 18 Xdebug-Plugin für Firefox Abb. 19 PHP-Konfiguration zur Aktivierung des Xdebug-Logs Abb. 20 Auszug aus den Logeinträgen von Xdebug mit fehlgeschlagener Verbindung Abb. 21 Netzwerk Anzeige des Macbooks Abb. 22 PHP-Konfiguration für eine feste Client-IP Abb. 23 Terminaleingabe um den Netzverkehr zu prüfen (alle Richtungen) Abb. 24 Terminaleingabe um den Netzverkehr zu prüfen (zum Server) Abb. 25 Terminaleingabe um den Netzverkehr zu prüfen (zum Client) Abb. 26 PhpStorm: Dialog zum Validieren Debugger-Konfiguration Abb. 27 PhpStorm: Dialog zur Nutzung von Breakpoints mit Abhängigkeiten Abb. 28 Fehlerausgabe im Browser Abb. 29 PhpStorm: Editor Ansicht mit angewählten Breakpoint Abb. 30 PhpStorm: Frames und Variablenübersicht in dem Debugger-Dialog Abb. 31 PhpStorm: Debug-Console Abb. 32 PhpStorm: Editor-Ansicht während der Debug-Session Abb. 33 PhpStorm: Debugger-Ansicht während einer laufenden Session Abb. 34 PHP-Konfiguration (php.ini) und Xdebug zu aktivieren Abb. 35 PHP-Konfiguration (php.ini) um Xdebug immer zu starten Abb. 36 Standardeintragungen in der Hosts-Datei Abb. 37 Code Coverage Analyse Abb. 38 PhpStorm: Allgemeine Settings im Zend Debugger