Let’s talk about Xdebug

1e3f36cacc64d0a924cdbb3fdc59e8af?s=47 move:elevator
September 19, 2017

Let’s talk about Xdebug

Vortrag zum Meetup der TYPO3 User Group Dresden

1e3f36cacc64d0a924cdbb3fdc59e8af?s=128

move:elevator

September 19, 2017
Tweet

Transcript

  1. None
  2. Let’s talk about Xdebug

  3. Jan Männig Senior CMS-Developer

  4. 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
  5. Einführung

  6. 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
  7. Einführung Warum Xdebug nutzen? Abb. 4

  8. 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
  9. Einführung PHP Xdebug-Extension für PHP Client, der die Informationen entgegennimmt

    und visualisiert Voraussetzungen
  10. Einrichtung

  11. Einrichtung zend_extension=/usr/local/php/7.0.17/lib/php/extensions/xdebug.so xdebug.remote_enable=On xdebug.remote_autostart=Off xdebug.remote_connect_back=Off ;xdebug.remote_host=192.168.111.98 xdebug.idekey=PHPSTORM xdebug.remote_port=9000 Alle Konfigurationen:

    www.xdebug.org/docs/all_settings Einstellungen in der php.ini PHP-Konfiguration Abb. 6
  12. Einrichtung PHP-Konfiguration Abb. 9 Abb. 8 Abb. 7

  13. Einrichtung Einrichtung der IDE am Beispiel des PhpStorm 2017.2 Globale

    Debugger-Settings in PhpStorm können im Normalfall beibehalten werden Abb. 10
  14. Einrichtung Einrichtung einer neuen „Run/Debug Configuration“ Einrichtung der IDE am

    Beispiel des PhpStorm 2017.2 Abb. 11 Abb. 12
  15. Einrichtung Einrichtung der IDE am Beispiel des PhpStorm 2017.2 Auswahl

    und Konfiguration des Zielservers Abb. 13 Abb. 14 Abb. 15
  16. Einrichtung Setzen des IDE-Schlüssels Einrichtung der IDE am Beispiel des

    PhpStorm 2017.2 Abb. 16
  17. Einrichtung Toolbar im Browser Verschiedene Toolbars für gängige Browser Möglichkeit

    zur Steuerung der „Debug“- und „Profiling“-Prozesse Abb. 17 Abb. 18
  18. Der Teufel steckt im Detail!

  19. 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
  20. Einrichtung Troubleshooting Setzen der direkten IP Deaktivieren „xdebug.remote_connect_back“ xdebug.remote_connect_back=Off xdebug.remote_host=192.168.2.107

    Interne IP des 
 eigenen Rechners Abb. 21 Abb. 22
  21. 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
  22. Einrichtung Troubleshooting Prüfung der Debugger-Konfiguration durch PhpStorm Menü: Run =>

    Web Server Debug Validation Abb. 26
  23. Nutzung

  24. 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
  25. 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
  26. Nutzung Debugging über den Browser Abb. 28

  27. Nutzung Debugging über den Browser Abb. 31 Abb. 30 Abb.

    29
  28. Nutzung Session-Start wenn „remote_autostart“ deaktiviert Besonderheiten im Terminal php -dxdebug.remote_autostart=1

    /var/www/html/typo3/sysext/core/bin/typo3 Abb. 32 Abb. 33
  29. 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
  30. Anhang

  31. 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
  32. 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
  33. Vielen Dank!

  34. Screens und Icons: PhpStorm 2017.2.3 Sonstige Grafiken: 
 
 Quellen

  35. 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