Wenn Sie diese Erweiterung nützlich finden, wenn sie Ihnen hilft, Ihre Probleme zu lösen, und wenn Sie die hier gegebene Unterstützung zu schätzen wissen, sollten Sie unsere Arbeit sponsern.
Installieren Sie die Erweiterung: Drücken Sie F1
, geben Sie ext install php-debug
ein.
Diese Erweiterung ist ein Debug -Adapter zwischen VS Code und XDebug von Derick Rethans. XDEBUG ist eine PHP -Erweiterung (eine .so
-Datei unter Linux und A .dll
unter Windows), die auf Ihrem Server installiert werden muss.
Installieren Sie XDEBUG Ich empfehle Ihnen dringend, eine einfache test.php
-Datei zu erstellen, ein phpinfo();
Anweisung drin, dann die Ausgabe kopieren und in den Assistenten der XDEBUG -Installation einfügen. Es wird es analysieren und Ihnen maßgeschneiderte Installationsanweisungen für Ihre Umgebung erhalten. Zusamenfassend:
Unter Windows: Laden Sie die entsprechende vorkompilierte DLL für Ihre PHP -Version, Architektur (64/32 Bit), Thread Safety (TS/NTS) und Visual Studio Compiler -Version herunter und platzieren Sie sie in Ihren PHP -Erweiterungsordner.
Unter Linux: Laden Sie den Quellcode entweder als Tarball herunter oder klonen Sie ihn mit Git und kompilieren Sie ihn dann. Oder sehen Sie, ob Ihre Verteilung bereits vorgefertigte Pakete anbietet.
Konfigurieren Sie PHP so, dass Sie XDEBUG verwenden, indem Sie zend_extension=path/to/xdebug
zu Ihrem Php.ini hinzufügen. Der Pfad Ihres Php.ini ist in Ihrer Ausgabe phpinfo()
unter "geladener Konfigurationsdatei" angezeigt.
Aktivieren Sie das Remote -Debuggen in Ihrem php.ini
:
Für xdebug v3.xx:
xDebug.mode = debugxdebug.start_with_request = yes
Für xdebug v2.xx:
xdebug.remote_enable = 1xDebug.remote_autostart = 1xDebug.remote_port = 9000
Es gibt andere Möglichkeiten, XDebug zu sagen, dass er eine Verbindung zu einem Remote -Debugger herstellt, wie Cookies, Abfrageparameter oder Browserverlängerungen. Ich empfehle remote_autostart
(xdebug v2)/ start_with_request
(xdebug v3), weil es "einfach funktioniert". Es gibt auch eine Vielzahl anderer Optionen, z. Bitte beachten Sie, dass sich der Standard -XDEBUG -Port zwischen XDebug V2 von 9000 auf 9003 geändert hat.
Wenn Sie Webentwicklung durchführen, vergessen Sie nicht, Ihren Webserver neu zu starten, um die Einstellungen neu zu laden.
Überprüfen Sie Ihre Installation, indem Sie Ihre phpinfo()
-ausgabe für einen XDEBUG -Abschnitt überprüfen.
Gehen Sie in Ihrem Projekt zum Debugger und drücken Sie das Little Gear -Symbol und wählen Sie PHP . Eine neue Startkonfiguration wird für Sie mit drei Konfigurationen erstellt:
Hören Sie auf xDebug zu . Diese Einstellung startet einfach auf den angegebenen Port (standardmäßig 9003) für XDEBUG. Wenn Sie XDebug wie oben empfohlen konfiguriert haben, stellt Sie jedes Mal, wenn Sie eine Anfrage mit einem Browser an Ihren Webserver stellen oder ein CLI -Skript XDebug starten, und Sie können an Haltepunkten, Ausnahmen usw. anhalten.
Starten Sie derzeit offenes Skript Diese Einstellung ist ein Beispiel für das CLI -Debuggen. Es wird das aktuell eröffnete Skript als CLI starten, alle STDOut/Stderr -Ausgaben in der Debug -Konsole anzeigen und die Debug -Sitzung beenden, sobald das Skript beendet ist.
Starten Sie integrierten Webserver Diese Konfiguration startet den integrierten PHP-Webserver auf einem zufälligen Port und öffnet den Browser mit der serverReadyAction
Anweisung. Der Port ist zufällig (localhost: 0), kann jedoch in einen gewünschten festen Port geändert werden (z. B. localhost: 8080). Wenn ein Router -Skript benötigt wird, fügen Sie es mit program
hinzu. Zusätzliche PHP/XDEBUG -Direktiven auslösen Debugging auf jeder Seite.
Es gibt auch Konfigurationen für XDEBUG V2 (Legacy) Installationen.
Allgemeinere Informationen zum Debuggen mit VS -Code finden Sie unter https://code.visualstudio.com/docs/editor/debugging.
Hinweis: Sie können sogar ein Skript ohne
launch.json
debuggen. Wenn kein Ordner geöffnet ist und die VS -Code -Statusleiste lila ist, startet das Drücken vonF5
das geöffnete Skript mit xDebug3 -spezifischen Parametern. Wenn sich die ausführbare PHP -Datei nicht im Pfad befindet, können Sie sie mit der Einstellungphp.debug.executablePath
zur Verfügung stellen. Für das Debuggen zur Arbeit muss XDEBUG immer noch korrekt installiert sein.
request
: Immer "launch"
hostname
: Die Adresse unix://
die beim Anhören von XDEBUG ( ?pipename
: Alle IPv6 -Verbindungen, falls verfügbar Hafen
port
: Der Port, an dem Sie auf XDEBUG anhören können (Standardeinstellung: 9003
). Wenn der Port auf 0
gesetzt ist, wird vom System ein zufälliger Port ausgewählt und ein Platzhalter ${port}
wird durch den ausgewählten Port in env
und runtimeArgs
ersetzt.
stopOnEntry
: Ob zu Beginn des Skripts brechen soll (Standard: false
)
pathMappings
: Eine Liste der Serverpfade zu den lokalen Quellpfaden Ihres Computers finden Sie in "Remote -Host -Debugging" unten
log
: Ob Sie die gesamte Kommunikation zwischen dem VS -Code und dem Adapter an der Debug -Konsole protokollieren. Siehe Fehlerbehebung weiter unten.
ignore
: Ein optionales Array von Glob -Mustern, von denen Fehler ignoriert werden sollten (z. B. **/vendor/**/*.php
)
ignoreExceptions
: Ein optionales Array von Ausnahmeklassennamen, die ignoriert werden sollten (z. B. BaseException
, NS1Exception
, *Exception
oder **Exception*
)
skipFiles
: Eine Reihe von Glob -Mustern, um beim Debuggen zu überspringen. Sternmuster und -negationen sind beispielsweise zulässig **/vendor/**
oder !**/vendor/my-module/**
.
skipEntryPaths
: Eine Reihe von Glob -Mustern, um sich sofort von Debugging zu lösen und zu ignorieren, wenn das Eintragskript übereinstimmt (Beispiel **/ajax.php
).
maxConnections
: Akzeptieren Sie nur diese Anzahl paralleler Debugging -Sitzungen. Zusätzliche Verbindungen werden fallen gelassen und ihre Ausführung wird ohne Debuggen fortgesetzt.
proxy
: DBGP -Proxy -Einstellungen
enable
: So aktivieren Sie die Proxy -Registrierung auf true
(Standard ist `false).
host
: Die Adresse des Proxy. Unterstützt Hostnamen, IP -Adresse oder UNIX -Domänen -Socket (Standard: 127.0.0.1).
port
: Der Port, in dem sich der Adapter beim Proxy registriert (Standard: 9001
).
key
: Ein eindeutiger Schlüssel, mit dem der Proxy die Anforderungen an Ihren Editor abgleichen kann (Standard: vsc
). Die Standardeinstellung wird von VSCODE -Einstellungen php.debug.idekey
entnommen.
timeout
: Die Anzahl der Millisekunden zum Warten, bevor Sie die Verbindung zum Proxy aufgeben (Standard: 3000
).
allowMultipleSessions
: Wenn der Proxy mehrere Sitzungen/Verbindungen gleichzeitig weiterleiten oder nicht (Standard: true
).
xdebugSettings
: Ermöglicht das Überschreiben von XDebugs Remote -Debugging -Einstellungen, um XDEBUG auf Ihre Anforderungen zu fügen. Sie können beispielsweise mit max_children
und max_depth
spielen, um die maximale Anzahl von Array- und Objektkindern zu ändern, die abgerufen werden, und die maximale Tiefe in Strukturen wie Arrays und Objekten. Dies kann den Debugger für langsame Maschinen beschleunigen. Eine vollständige Liste der Feature -Namen, die festgelegt werden können, finden Sie in der XDebug -Dokumentation.
max_children
: maximale Anzahl von Array- oder Objektkindern, die zunächst abrufen können
max_data
: maxe Menge an variablen Daten, um zunächst abzurufen.
max_depth
: Maximale Tiefe, die die Debugger -Engine beim Senden von Arrays, Hashes oder Objektstrukturen an die IDE zurückgeben kann (es sollte nicht erforderlich sein, diese zu ändern, da die Tiefe schrittweise abgerufen wird, kann großer Wert die IDE hängen).
show_hidden
: Diese Funktion kann von der IDE festgelegt werden, wenn sie detailliertere interne Informationen zu Eigenschaften (z. B. private Mitglieder von Klassen usw.) haben möchten, bedeutet, dass versteckte Mitglieder der IDE nicht angezeigt werden.
xdebugCloudToken
: Anstatt lokal zuzuhören, öffnen Sie eine Verbindung und registrieren Sie sich bei XDebug Cloud und akzeptieren Sie Debugging -Sitzungen in dieser Verbindung.
stream
: Ermöglicht die Beeinflussung von DBGP -Streams. Xdebug unterstützt nur stdout
siehe DBGP Stdout
stdout
: Stdout Stream weiterleiten: 0 (Deaktivieren), 1 (Kopie), 2 (Umleitung)
Optionen spezifisch für CLI -Debugging:
program
: Pfad zum Skript, das gestartet werden sollte
args
: Argumente, die an das Skript übergeben wurden
cwd
: Das aktuelle Arbeitsverzeichnis, das beim Starten des Skripts verwendet werden soll
runtimeExecutable
: Pfad zum PHP -Binary, der zum Starten des Skripts verwendet wird. Standardmäßig der auf dem Pfad.
runtimeArgs
: Zusätzliche Argumente, die an die PHP -Binärdatei geleitet werden sollen
externalConsole
: Startet das Skript in einem externen Konsolenfenster anstelle der Debug -Konsole (Standard: false
)
env
: Umgebungsvariablen, um an das Skript zu gelangen
envFile
: Optionaler Pfad zu einer Datei mit Umgebungsvariablendefinitionen
Zeilenbrauchpunkte
Bedingte Haltepunkte
Breakpoints von Tit Count: Stützt die Bedingungen wie >=n
, ==n
und %n
Funktionsbrauchpunkte
Treten Sie ein, setzen Sie sich ein, treten Sie aus
Eintritt brechen
Beginnen Sie mit Stop on Entry (F10/F11)
Aufbrechen von nicht erfassten Ausnahmen und Fehlern / Warnungen / Hinweisen
Mehrere parallele Anfragen
Stapelspuren, Umfangsvariablen, Superglobale, benutzerdefinierte Konstanten
Arrays & Objekte (einschließlich Klassenname, private und statische Eigenschaften)
Debuggkonsole
Uhren
Variablen einstellen
Laufen Sie als CLI
Ohne Debuggen laufen
DBGP -Proxy -Registrierung und Unregistrierungsunterstützung
Xdebug Cloud -Unterstützung
Um eine laufende Anwendung auf einem Remote -Host zu debuggen, müssen Sie XDebug mitteilen, dass sie eine Verbindung zu einem anderen IP als localhost
herstellen sollen. Dies kann entweder durchgeführt werden, indem xdebug.client_host
auf Ihre IP eingestellt wird oder durch Einstellen von xdebug.discover_client_host = 1
um XDEBUG immer wieder zu dem Computer herzustellen, der die Webanforderung durchgeführt hat. Letzteres ist die einzige Einstellung, die mehrere Benutzer unterstützt, die denselben Server debuggen und nur für Webprojekte "funktioniert". Weitere Informationen finden Sie in der XDebug -Dokumentation zu diesem Thema.
Um die Dateien auf dem Server auf Ihrem lokalen Computer auf den Server zu erstellen, müssen Sie die pathMappings
-Einstellungen in Ihrem Start festlegen. JSON. Beispiel:
// Server -> Lokale "PathMappings": {"/var/www/html": "$ {WorkspaceFolder}/www", "/App": "$ {WorkspaceFolder}/App"}
Bitte beachten Sie auch, dass das Festlegen einer der CLI -Debugging -Optionen nicht mit dem Debugging des Remote -Hosts funktioniert, da das Skript immer lokal gestartet wird. Wenn Sie ein CLI -Skript auf einem Remote -Host debuggen möchten, müssen Sie es manuell aus der Befehlszeile starten.
Der Debugger kann sich mit einem IDE -Schlüssel zu einem DBGP -Proxy registrieren. Der Proxy leitet dann nur die DBGP -Sitzungen, die diesen angegebenen IDE -Schlüssel haben. Dies ist hilfreich in einer Multiuser -Umgebung, in der Entwickler nicht gleichzeitig denselben DBGP -Port verwenden können. Es ist sorgfältig eingerichtet, dass Anfragen an den Webserver den passenden IDE -Schlüssel enthalten.
Die offizielle Umsetzung der DBGpproxy.
Eine Xdebug -Helfer -Browser -Erweiterung wird ebenfalls empfohlen. Dort kann der Anforderungs -Side -IDE -Schlüssel leicht konfiguriert werden.
Stellen Sie eine Frage zum Stackoverflow
Wenn Sie der Meinung sind, dass Sie einen Fehler gefunden haben, öffnen Sie ein Problem
Stellen Sie sicher, dass Sie die neueste Version dieser Erweiterung und XDebug installiert haben
Probieren Sie eine einfache PHP -Datei aus, um das Problem neu zu erstellen, z. B. aus dem TestProject
Setzen Sie "log": true
in Ihrem Start.json und beobachten Sie das Debug -Konsolen -Panel
Setzen Sie in Ihrem php.ini xdebug.log = /path/to/logfile
(stellen Sie sicher, dass Ihr Webserver Berechtigungen in die Datei hat).
Erreichen Sie auf Twitter @damjancvetko
Um diesen Adapter zu hacken, klonen Sie das Repository und öffnen Sie es in VS -Code. Sie benötigen NodeJs mit installiertem NPM und auf Ihrem Weg. Auch ein aktuelles PHP und XDEBUG sollte installiert und auf Ihrem Weg installiert werden.
Installieren Sie NPM -Pakete, indem Sie entweder npm install
in der Befehlszeile im Projektverzeichnis oder die Auswahl Terminal / Run Task... / npm / npm: install
im Menü VS -Code.
Führen Sie den Build / Watch -Vorgang entweder durch Ausführen von npm run watch
in Befehlszeile im Projektverzeichnis oder Auswahl Terminal / Run Build Task...
im VS -Codemenü aus.
Starten Sie den Debug -Adapter, indem Sie die Run- und Debug -Seitenleiste öffnen, die Konfiguration Debug adapter
auswählen und auf den Green Run -Pfeil klicken (oder auf F5
klicken). Der kompilierte Adapter wird im "Servermodus" ausgeführt und den TCP -Port 4711 anhören.
Führen Sie eine separate Instanz von VS -Code aus, die als "Erweiterungsentwicklungshost" bezeichnet wird, indem code testproject --extensionDevelopmentPath=.
In der Befehlszeile im Projektverzeichnis oder zur Auswahl der Launch Extension
und Debugg -Konfiguration und Drücken des Green Run -Pfeils. Eine weitere Verknüpfung ist der Ausführen von npm run start
. Sie können auch einen Insider -Build von VS -Code ausführen, um neuere Funktionen zu testen.
In der Instanz "Extension Development Host" öffnen Sie .vscode/launch.json
und kontrollieren Sie die debugServer
-Konfigurationslinie. Führen Sie Ihre PHP -Debug -Sitzung aus, indem Sie die gewünschte Konfiguration auswählen und auf F5
klicken. Jetzt können Sie das testProject wie oben angegeben debuggen und Haltepunkte in Ihrer ersten VS -Code -Instanz festlegen, um den Adaptercode durchzuführen.
Weitere Informationen zu Testweiterungen finden Sie unter https://code.visualstudio.com/api/working-with-extenssions/testing-eutsion.
Die Tests werden mit Mokka geschrieben und können mit npm test
oder von Terminal / Run Task... / npm: test
. Wenn Sie ein PR einreichen, werden die Tests in CI unter Linux, MacOS und Windows mit mehreren PHP- und XDEBUG -Versionen ausgeführt.
Bevor Sie einen PR einreichen, führen Sie auch npm run lint
oder Terminal / Run Tasks... / npm: lint
.