Debuggen mit PhpStorm

Schaffen Sie sich eine solide Grundlage, um tiefer in die vielschichtige Welt des Debuggings mit PhpStorm eintauchen zu können. In dieser Folge erfahren Sie, wie Sie mit Xdebug eine Debugsitzung starten, Haltepunkte setzen und Ihren Code schrittweise ausführen können.

Transkript

Eine der leistungsfähigsten Features von PhpStorm ist sein Debugger. Die Bezeichnung „Debugger“ wurde bereits in den 1940er Jahren geprägt und bedeutet wörtlich „etwas, das Bugs oder Fehler in einem Programm beseitigt“. Mit einem Debugger können Sie Ihren Code während der Ausführung anhalten, um den Programmspeicher zu untersuchen, den Ausführungspfad des Codes nachzuvollziehen und viele weitere Erkenntnisse zu gewinnen. Der Zweck eines Debuggers besteht darin, Problemstellen zu finden und Fehler in Ihrem Code zu beseitigen.

PhpStorm verfügt über einen integrierten, leichtgewichtigen Debugger, aber der bei weitem meistverwendete PHP-Debugger ist Xdebug, den Sie separat installieren müssen. Glücklicherweise kann Ihnen PhpStorm jedoch die Installation abnehmen. Sehen wir uns also an, wie Sie Xdebug für PhpStorm einrichten und wie Sie mit dem Debuggen beginnen können.

Nehmen wir einmal an, Sie haben Xdebug noch nicht installiert. Was passiert, wenn Sie mit dem Debugging in einem PHP-Skript – z. B. einem Test – beginnen? Anstatt den Test normal auszuführen, können Sie die Schaltfläche Debug drücken. Wie Sie sehen, informiert uns PhpStorm, dass zwar kein Debugger installiert ist, aber die IDE das Problem für Sie lösen kann. Drücken Sie einfach Update Interpreter Info und dann Download and install Xdebug extension. Geben Sie der IDE anschließend einen Moment Zeit, damit sie Xdebug für Sie einrichten kann.

Wenn dieser Vorgang abgeschlossen ist, führt PhpStorm Ihren Test automatisch mit aktiviertem Debugger erneut aus – aber es passiert nicht viel. Aber wir haben dem Debugger ja auch noch nicht gesagt, dass er irgendwo anhalten soll. Dazu müssen wir sogenannte „Haltepunkte“ setzen.

Ein Haltepunkt ist eine Stelle in Ihrem Code, an der der Debugger die Ausführung vorübergehend unterbricht, damit Sie den Programmzustand untersuchen können.

Setzen wir zum Beispiel in dieser Zeile einen Haltepunkt. Wir klicken auf die Zeilennummer in der Randleiste, und das war’s. Führen wir nun den Test erneut aus.

Diesmal werden Sie feststellen, dass sich einiges geändert hat. Das Programm wird angehalten, und PhpStorm zeigt verschiedene Informationen an.

Links sehen Sie alles, was passiert ist, bevor wir an diesem Haltepunkt angekommen sind. Wir sind über diese Methodenaufrufe hierher gelangt. Sie können sie anklicken, und PhpStorm zeigt Ihnen den Weg des Codes durch die verschiedenen Dateien.

Rechts sehen Sie alle Variablen, die am Haltepunkt zugänglich sind. Die Variable $this verweist auf die Testklasse; Sie können sie öffnen und sich den Inhalt ansehen. Dann gibt es noch andere Variablen wie zum Beispiel die globale Variable $_ENV. PhpStorm zeigt Ihnen deren Inhalt an, und Sie können sehen, wie sich die Liste der Variablen ändert, wenn wir zu einem der vorherigen Methodenaufrufe wechseln.

Der Debugger bewegt sich nun in unserem Programmablauf rückwärts, was sehr nützlich sein kann, wenn wir erfahren wollen, was vor einem bestimmten Punkt passiert ist. Aber wie können wir uns vorwärts bewegen?

Wir können die Ausführung im Debugger fortsetzen, indem wir auf Resume klicken, aber dann wird der Test einfach bis zum Ende ausgeführt.

Kehren wir also zu unserem Haltepunkt zurück, und statt Resume können wir auf die Schaltflächen Step over oder Step into klicken. Und diese beiden sind sehr mächtige Werkzeuge.

„Step over“ bedeutet, dass der Debugger den Code bis zur nächsten Anweisung ausführt und dann die Ausführung erneut pausiert. „Step into“ bedeutet, dass der Debugger eine Ebene tiefer gehen und den Code innerhalb eines Funktionsaufrufs debuggen soll.

Diese beiden Schaltflächen bieten enorme Möglichkeiten. Sie können damit im Wesentlichen in Ihrem Programmfluss navigieren und dabei untersuchen, wie sich Variablen ändern, warum Bedingungen erfüllt oder nicht erfüllt werden, wie oft eine Schleife durchlaufen wird und vieles mehr.

Aber das Debugging ist nicht nur ein mächtiges, sondern auch ein komplexes Werkzeug. Es ist eine Menge los, und es ist schwierig, ohne Kontext sinnvolle Beispiele zu geben. Es ist auch etwas, das man üben muss, um sich daran zu gewöhnen, genau wie zum Beispiel das Spielen eines Instruments.

Daher werden wir Folgendes tun. Ich habe Ihnen die Grundlagen der Arbeit mit dem Debugger gezeigt: wie Sie eine Debugsitzung starten, Haltepunkte setzen und den Code schrittweise ausführen können. Sie müssen sich daran gewöhnen, und das geht nur durch Übung. Wenn Sie das nächste Mal var_dump oder dd verwenden, probieren Sie stattdessen den Debugger aus. Beim ersten Mal wird es ein bisschen mühsam sein, aber mit der Zeit wird es einfacher, und auf lange Sicht wird es sich auszahlen.