2009-05-02 10 views
3

Ich habe mit xdebug seit einiger Zeit Code in PHP-Projekten debuggen und verstehen gelernt und bin manchmal in Situationen geraten, in denen unklar war, was in PHP vor sich geht.Debugging PHP

Ist es möglich, xdebug oder gdb up zu setzen, so dass ich in tatsächliche PHP eingebaute Funktionen verfolgen kann?

Antwort

2

Wenn Sie ein Macosx-, Solaris- oder FreeBSD-System verwenden, können Sie ein wenig Dtrace darauf werfen. Es kann nützlich sein für diejenigen, die allzu zahlreich sind "WTF macht PHP?" Momente.

+0

eine schnelle Google aufgetaucht http://blogs.sun.com/bmc/entry/dtrace_and_php_demonstriert - wenn Sie mehr Zeiger haben, um zu beginnen, bitte posten sie – xkcd150

+0

nichts bestimmtes, ich war nicht bewusst, dass dieser Link, danke . Ich hatte einige Probleme, bei denen das Aufspüren aller Dateisystemaufrufe von PHP genug war. Speziell für Foppen und Herden suchen. Es stellt sich heraus, dass PHP keine include_once/require_once-Deklarationen mag (es ist kein Gebrauch von (perl)/import (java), wie ich es behandelt habe). Zu viele referenzierte Dateien würden einen Tod durch Herde verursachen. – Trey

+0

Oh, das war eine gute Ressource. http://www.brendangregg.com/DTrace/dtrace_oneliners.txt – Trey

1

Ich bezweifle es, xdebug ist für die Rückverfolgung Ihres PHP-Codes gedacht, nicht die Interna. Es wird angenommen, dass die Interna fehlerfrei sind (was offensichtlich nicht manchmal der Fall ist, aber das liegt außerhalb des Geltungsbereichs von xdebug).

Sie können immer die PHP-Quelle betrachten, wenn Sie wissen wollen, was die eingebauten Funktionen tun, aber das ist manchmal ziemlich haarig. Die PHP-Manual-Dokumentation hat mir immer gut genug gedient, wenn ich wissen will, was sie tun werden.

1

Eine Möglichkeit, die Ausgabe des Zend-Engine zu testen, an den OP-Codes nach innen spähen, können Sie Derick Rethan's VLD (Vulcan Logic Dissasembler) verwenden, die auch erscheint auf PECL sein. Hinweis: funktioniert nur auf * nix-Systemen (Anforderungen siehe Seite).

Einige Beispiele zum Debuggen dieser Opcodes finden Sie unter Sara Golemon's blog in Artikeln wie Understanding Opcodes und How long is a piece of string?.

+1

nett, ich werde das auch ausprobieren müssen. Vielen Dank! – xkcd150

1

Es gibt auch große Google Chrome-Erweiterung PHP Console mit php library, die erlaubt:

  • Fehler anzeigen und Ausnahme in Chrome JavaScript-Konsole und in Benachrichtigung Pop-ups.
  • Dump jede Art Variable.
  • PHP-Code remote ausführen.
  • Zugang mit Passwort schützen.
  • Gruppenkonsole Protokolle auf Anfrage.
  • Wechseln zur Fehlerdatei: Zeile in Ihrem Texteditor.
  • Kopieren Fehler/Debug-Daten in die Zwischenablage (für Tester).

Allen zu empfehlen!