45 Stimmen

xdebug-Ferndebugging stoppt nicht an Haltepunkten

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?

0voto

Yasar Punkte 89

Ich hatte ein ähnliches Problem und bin auf einen Beitrag gestoßen, der das Problem behebt. Mein html-Formular (testform.html) rief ein php-Skript (runQuery.php) auf und Netbeans konnte an den festgelegten Haltepunkten in meiner runQuery.php nicht unterbrechen

Nachdem ich alle Konfigurationseinstellungen in der php.ini und Netbeans überprüft habe, indem ich in Foren wie diesem hier gesucht habe, habe ich herausgefunden, dass Netbeans nur dann an den Haltepunkten abbricht, wenn die Indexdatei für das Projekt eine PHP-Datei ist. Dies ist sehr wichtig, da man sonst Stunden damit verbringen wird, herauszufinden, warum die Haltepunkte nicht funktionieren.

Gehen Sie in Netbeans in die Datei/Projekteigenschaften/Ausführungskonfiguration und überprüfen Sie, ob die Indexdatei eine PHP-Datei ist. In meinem Fall änderte ich meine Indexdatei von testform.html in testform.php und es funktionierte, ich konnte an Haltepunkten abbrechen.

0voto

lepe Punkte 23471

In meinem Fall trat das Problem nur in einem Projekt auf (ich war nur in der Lage, mit xdebug_break zu brechen), während es in den anderen Projekten problemlos funktionierte.

Das Problem wurde bei der Bearbeitung der Datei behoben: nbproject/privat/privat.properties : Und fertig:

copy.src.files=false

Beim Erstellen des Projekts habe ich versehentlich die Option "Quellen kopieren" gewählt. Dann habe ich das Projekt manuell verschoben und seinen Quellpfad bearbeitet (in der Datei "nbproject/project.properties"), wobei der Debugger immer noch nach dem alten Pfad suchte (eingestellt in copy.src.target).

Technisch gesehen besteht die andere Möglichkeit, dieses DEBUG-Problem zu beheben, darin, das nbproject-Verzeichnis neu zu erstellen (indem man es entfernt und das Projekt neu erstellt). Ich schätze, der Debugger sollte mit der aktivierten Option "Kopieren" gut funktionieren (da ich sie nie benutze).

Ich hoffe, dies kann helfen.

0voto

yclian Punkte 1490

Das passiert mir von Zeit zu Zeit, und ich konnte die eigentliche Ursache des Problems noch nie herausfinden.

Normalerweise löse ich das Problem damit,

  1. Platzieren von mehr Haltepunkten am Client-Code, der die Instanzen konstruiert und die Klassen lädt (da es scheint, dass XDebug einige Haltepunkte aufgrund von Problemen beim Laden von Klassen ignoriert). Sie können lernen und erkennen, wo diese Stellen sind, indem Sie einige Step-Ins durchführen.

  2. Überprüfen Sie die Quellpfade der Abhängigkeiten. XDebug nimmt diese Dateien anhand ihrer vollständigen Pfade auf. Sie können sehen, wie Ihre IDE sie in Ihrem Haltepunkt-Panel anspricht.

-1voto

Black Punkte 15156

Stellen Sie außerdem sicher, dass die Dateien lokal und remote synchronisiert sind, da sonst Ihr Haltepunkt in einem ungültigen Bereich, z.B. einer Leerzeile, landen könnte und nicht funktioniert.

Vergewissern Sie sich auch, dass Sie über ausreichende Berechtigungen verfügen. Ich habe versucht, über NetBeans zu synchronisieren und erhielt Erlaubnis verweigert

Vergewissern Sie sich auch, dass die URL in Ihrem Browser richtig eingestellt ist, nachdem Sie den Debugger gestartet haben. In meinem nbproject-Ordner war eine alte URL enthalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X