Falc410
Vice Admiral
- Registriert
- Juni 2006
- Beiträge
- 6.624
Ich bin am verzweifeln. Nachdem ich mit Stack Overflow nicht weiterkomme, probiere ich hier mal mein Glück.
Und zwar benutze ich VS Studio Code, xDebug 3.1.1 auf einem Linux Server um ein PHP Script zu debuggen. Als Extension in VS Code kommt PHP Debug zum Einsatz. https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug
Soweit so gut. Wenn ich auf Run + Debug klicke, wird das Script ausgeführt und passt alles soweit. Alternativ kann ich auf "Listen for Xdebug" klicken, dann im Terminal nebenbei php meinScript.php eingeben und es funktioniert.
Aber ich habe bestimmte Parameter die ich an xDebug übergeben muss, da ansonsten die Objekte nicht richtig im Debugger dargestellt werden. Das habe ich schon mit Hilfe von Stackoverflow herausgefunden. Also die Run Config angepasst
Die Parameter für "Listen for Xdebug" werden übernommen und dann klappt auch alles. Was nicht funktioniert ist "
Launch currently open script" - egal ob ich das auswähle und auf Run klicke oder das Script auswähle und F5 drücke, die Parameter werden nicht übernommen. Wie man sieht habe ich es schon mit runTimeArgs probiert und auch als XDEBUG_CONFIG exportiert - geht beides nicht. Zusätzlich habe ich auf dem Server noch die Parameter in die zwei Configs geschrieben (weiss auch nicht warum es zwei gibt, php benutzt anscheinend nur die erste):
/etc/php/7.4/cli/conf.d/99-xdebug.ini
/etc/php/7.4/mods-available/xdebug.ini
Wenn ich php -i eingebe, sehe ich auch das alles stimmt:
Wie schaffe ich es, dass die Parameter korrekt an PHP / xDebug übergeben werden wenn ich "Launch currently open script" mache oder einfach F5 drücke in VS Code? Ich habe das Gefühl, dass die komplette JSON Datei komplett ignoriert wird, selbst wenn ich den Eintrag lösche, funktioniert F5 weiterhin, aber halt eben nur eingeschränkt. Der einzige (nervige) Weg wie ich im Moment debuggen ist, ist den Listener zu starten und dann das PHP Script über den Terminal auszuführen.
Und zwar benutze ich VS Studio Code, xDebug 3.1.1 auf einem Linux Server um ein PHP Script zu debuggen. Als Extension in VS Code kommt PHP Debug zum Einsatz. https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug
Soweit so gut. Wenn ich auf Run + Debug klicke, wird das Script ausgeführt und passt alles soweit. Alternativ kann ich auf "Listen for Xdebug" klicken, dann im Terminal nebenbei php meinScript.php eingeben und es funktioniert.
Aber ich habe bestimmte Parameter die ich an xDebug übergeben muss, da ansonsten die Objekte nicht richtig im Debugger dargestellt werden. Das habe ich schon mit Hilfe von Stackoverflow herausgefunden. Also die Run Config angepasst
JSON:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"xdebugSettings": {
"max_children": 1000,
"max_data": 10000,
"max_depth": 10,
"show_hidden": 1
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 0,
"runtimeArgs": [
"-d xdebug.start_with_request=yes",
"-d xdebug.var_display_max_depth=10",
"-d xdebug.var_display_max_children=1000",
"-d xdebug.var_display_max_data=10000",
],
"env": {
"XDEBUG_MODE": "debug,develop",
"XDEBUG_CONFIG": "client_port=${port} var_display_max_depth=10 var_display_max_children=1000 var_display_max_data=10000 var_show_hidden=1"
}
},
{
"name": "Launch Built-in web server",
"type": "php",
"request": "launch",
"runtimeArgs": [
"-dxdebug.mode=debug",
"-dxdebug.start_with_request=yes",
"-S",
"localhost:0"
],
"program": "",
"cwd": "${workspaceRoot}",
"port": 9003,
"serverReadyAction": {
"pattern": "Development Server \\(http://localhost:([0-9]+)\\) started",
"uriFormat": "http://localhost:%s",
"action": "openExternally"
}
}
]
}
Die Parameter für "Listen for Xdebug" werden übernommen und dann klappt auch alles. Was nicht funktioniert ist "
Launch currently open script" - egal ob ich das auswähle und auf Run klicke oder das Script auswähle und F5 drücke, die Parameter werden nicht übernommen. Wie man sieht habe ich es schon mit runTimeArgs probiert und auch als XDEBUG_CONFIG exportiert - geht beides nicht. Zusätzlich habe ich auf dem Server noch die Parameter in die zwei Configs geschrieben (weiss auch nicht warum es zwei gibt, php benutzt anscheinend nur die erste):
/etc/php/7.4/cli/conf.d/99-xdebug.ini
/etc/php/7.4/mods-available/xdebug.ini
Wenn ich php -i eingebe, sehe ich auch das alles stimmt:
Code:
php -i | grep xdebug
/etc/php/7.4/cli/conf.d/99-xdebug.ini
....
xdebug.var_display_max_children => 1000 => 1000
xdebug.var_display_max_data => 10000 => 10240
xdebug.var_display_max_depth => 10 => 10
Wie schaffe ich es, dass die Parameter korrekt an PHP / xDebug übergeben werden wenn ich "Launch currently open script" mache oder einfach F5 drücke in VS Code? Ich habe das Gefühl, dass die komplette JSON Datei komplett ignoriert wird, selbst wenn ich den Eintrag lösche, funktioniert F5 weiterhin, aber halt eben nur eingeschränkt. Der einzige (nervige) Weg wie ich im Moment debuggen ist, ist den Listener zu starten und dann das PHP Script über den Terminal auszuführen.