Ich habe ein Problem damit, dass xdebug bei der Verwendung von Remote-Debugging nicht an Haltepunkten anhält (beim Ausführen von Skripten über die Befehlszeile ist alles in Ordnung). Es bricht bei der ersten Zeile des Programms ab und beendet sich dann, ohne irgendwelche Haltepunkte zu erfassen.
Früher hat das gut funktioniert, bis ich auf MacPorts für Apache und PHP umgestiegen bin. Ich habe mehrmals versucht, es neu zu kompilieren (mit verschiedenen Versionen), aber ohne Erfolg.
Ich verwende PHP 5.3.1 und Xdebug 2.1.0-beta3
Ich habe auch mindestens 3 verschiedene Debugging-Programme ausprobiert (MacGDBp, Netbeans und JetBrains Web IDE).
Meine php.ini-Einstellungen sehen wie folgt aus:
[xdebug]
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_port=9000
xdebug.remote_host=localhost
xdebug.idekey=webide
Und wenn ich die Debugger-Ausgabe protokolliere, sieht das Setzen eines Haltepunkts wie folgt aus/;
<- breakpoint_set -i 895 -t line -f file:///Users/WM_imac/Sites/wm/debug_test.php -n 13 -s enabled -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="breakpoint_set" transaction_id="895" state="enabled" id="890660002"></response>
Wenn er ausgeführt wird, erhält der Debugger den Kontext der ersten Zeile der Anwendung und sendet dann die Meldungen detach und stop.
Diese Zeile wird jedoch beim Starten des Debuggers ausgegeben.
<- feature_get -i 885 -n breakpoint_types -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" command="feature_get" transaction_id="885" feature_name="breakpoint_types" supported="1"><![CDATA[line conditional call return exception]]></response>
Bedeutet 'line conditional call return exception' etwas?
0 Stimmen
Weitere Nachforschungen ergaben, dass es sich bei der "line conditional call return exception" um eine Liste der unterstützten Haltepunkte und nicht um eine Fehlermeldung handelt.
3 Stimmen
Der Aufruf von xdebug_break(); in meinem Code führt ordnungsgemäß zum Anhalten des Debuggers.
0 Stimmen
Können Sie den Pfad zu Ihrer php.ini-Datei angeben? Verwenden Sie HTTPS für diesen Host?
0 Stimmen
Mit normalem http, mit ini-Datei unter
/opt/local/etc/php5/php.ini
(Standardspeicherort für die MacPorts-Installation)0 Stimmen
Nachdem ich dieses Problem sehr lange Zeit hatte, scheint es durch a) ein Upgrade von Leopard auf Snow Leopard (wodurch ein Großteil des Unix-Systems in OS X neu installiert wird) und b) eine komplette Neuinstallation meiner Entwicklungsumgebung über MacPorts behoben worden zu sein.
0 Stimmen
Das habe ich hier noch nicht gesehen... also : mit
xdebug.remote_connect_back = 1
hat das Problem für mich behoben; auch wenn Ihr Server dadurch für jeden zum Debuggen offen ist, ist das in Ordnung, wenn es sich um eine VM auf Ihrem lokalen Rechner handelt. Ich denkexdebug.remote_host =
ist der Schlüssel, um dies gezielter zu tun und es auf Ihren Arbeitsplatz zu beschränken. Und der Neustart von Apache, wenn Sie die Einstellungen ändern...