Zum Inhalt springen

[PHP5] Debug, Ablaufverfolgung, Trace..


Empfohlene Beiträge

hi,

welche Methoden / Klassen / Funktionen kennt ihr zum Debugging, gibts evtl. von PHP "etwas" das sinnvoll wäre ?

also so eine Art Exception-Stacktrace das mir im Debugmodus den kompletten baum an Funktionaufrufen (+eigener Debugzeilen) in eine Datei schreibt oder ausgibt, ohne das ich die Halbe Anwendung umtippen muss damit die Debugzeilen keine Fehler verursachen oder ich in jeder Funktion eine Debugzeile buffern muss.

....

also soll eine allgemeine Frage sein ^^ ich suche einen möglichst effizenten weg scripts zu debuggen. Insbesondere Anwendungen der größeren Natur mit Frameworks, Klassenbibliotheken unsw. in die ich nicht überall reintipseln kann / will

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmmm... also ich hab das normal so gemacht, dass ich eine Variable test oder debug gesetzt habe und wenn die auf 1 war wurden alle debug-messages angezeigt und wenn nciht, dann wurde halt einfach drübergesprungen im Quelltext.

Es gibt aber bei Phase 5 von Uli Meybohm einen PHP-Debugger beim Programm dabei. Mittlerweile hat wer anders die entwicklung übernommen.

siehe hier

[edit]

Zur nichtkommerziellen Programmierung ist der Editor übrigens kostenlos! :)

[/edit]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auch hier:

Zend Studio benutzen.

Das Studio kann die .ini Dateien der Produktivumgebung einbinden und das zu debuggende Programm dann Zeile für Zeile durchlaufen und wird dann Notices, Warnings und Fatal Errors anzeigen und auch den dazugehörigen Ursprung.

Natürlich erhält man auch eine Übersicht der gerade verwendeten Funktionen, Klassen und Methoden.

Weiterhin kann man damit auch ein Benchmarking durchführen, was unheimlich dabei hilft den PHP Code zu verfeinern und zu beschleunigen.

Auch wer die Ausgabe von 350 Euro für das Zend Studio scheut, sollte sich das Ding halt herunterladen... Es kann ja einen Monat in der Vollversion kostenlos benutzt werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 1 Monat später...

ich erwecke das thema nochmal zum leben.

Ich habe derzeit ein etwas komplexeres Projekt - wiedermal ^^, bei dem ich die Struktur und den funktionsablauf analysieren will.

PHP5 !

das bedeutet: eine Logdatei, welche Funktion in welcher Reihenfolge bei einem Ablauf aufgerufen wird.

Performance ist erstmal nicht so wichtig, es geht um die strukturelle / prozedurale Analyse.

daher suche ich soetwas wie eine magische-Funktion die vor jedem funktionaufruf ausgelöst wird und den Funktionsnamen übergibt, oder einen Stack in dem Alle aufgerufenen Funktionen stehen.

Ich vermute letzteres gibt es nicht...

Ich habe es anfangs mit eigenen Methoden zu beginn jeder Funktion versucht, aber das wäre eine schweine Arbeit die überhaupt in dem code unter zu bringen. Dazu verwende ich frameworks / gegebene Klassen, die ich nur sehr ungern erweitern will und es ist natürlich auch eine nicht un unterschätzender Quellcode-menge mit 1/2 Zeilen je Funktion mehr.

Hat jemand eine Idee ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe es anfangs mit eigenen Methoden zu beginn jeder Funktion versucht, aber das wäre eine schweine Arbeit die überhaupt in dem code unter zu bringen.

Einfach mal als Brainstorming: Den php Quellcode laden, an die entsprechenden Stellen eine kurze Ausgabefunktion einfügen, compilieren, glücklich sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Jester

wie meinen ?

@amstel

der Debugger gibt mir aber doch nicht "nach" erfolgreicher bearbeitung eines Scripts den Ablauf aus oder ?!

Hier ist auch zu bedenken das ich das Script ganz normal über den browser starten muss. Viele Aktionen meiner Anwendung werden von AJAX gesteuert / gestartet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Jester

wie meinen ?

Der PHP-Quellcode ist offen. Du kannst ihn dir runterladen und selbst daran rumbasteln. Meine Idee (war erstmal nur eine solche) war , dass du im Quellcode die Stellen suchst, in denen das PHP-Skript interpretiert wird und beim Aufruf einer Funktion dort eben etwas einbaust, dass die diesen Aufruf protokolliert.

Also prinzipiell sollte das ja so gehen. Das ist ja praktisch dasselbe, was du mit deinem Aufruf am Anfang von allen Funktionen schon gemacht hattest, nur eben zentral und ohne Änderung am PHP-Skript.

Da ich mich mit dem PHP-Quelltext aber noch nie beschäftigt habe, kann ich dir weiter auch keine Tips dazu geben, nur so allgemein ;)

Idealerweise baust du PHP so um, dass du am Anfang des Skriptes oder des PHP-Durchlaufs über eine Variable o.ä. steuern kannst, ob die Debug-Ausgaben geschrieben werden sollen. Noch idealer stellst du das dann dem PHP-Projekt bereit, dass die das vielleicht in die offizielle PHP-Ausgabe übernehmen (oder als Debug-Ausgabe einbauen, oder irgendwie anbieten).

Am aller idealsten gibt es sowas von denen ja vielleicht sogar schon. Vielleicht kannst du ja mal bei einer offiziellen PHP-Mailing-Liste nachfragen (oder forum, oder was auch immer). Die könnten die dann bestimmt auch mehr helfen.

Und perfekt wäre es, wenn du das Ergebnis des ganzen dann hier kurz mitteilst. Im Moment brauch ich das nicht, aber interessant wäre das bestimmt mal :)

EDIT:

Mit dem Debugger von PHPEd (andere bestimmt ähnlich) kannst du dein Skript ganz normal über den Browser starten etc. Das geht auch bei entfernten Servern. Du musst nur eine DLL (Shared Object) auf den Server kopieren und in der ini starten. Das war auch mein erster Gedanke (@Amstelchen) allerdings wird dann nichts geloggt oder so.

Das wäre dann "von Hand" vielleicht schon möglich, allerdings IMHO sehr aufwendig (ok, meine Lösungsidee ist auch vom aufwand nicht zu unterschätzen, aber eleganter (wenn sie dann mal läuft) ;) ).

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok, dann habe ich dich wohl verstanden. Mal erkundigen was da geht.

ich habe selber noch nicht in den PHP-Quellcode reingesehen, habe schon eine kriese bekommen als ich versuchte informationen über das "howto" einer eigenen Extension zu finden.

Ich teile mich mit wenn ich mehr Infos habe.

Link zu diesem Kommentar
Auf anderen Seiten teilen

nun,

nach einigen Google-Minuten und endlos neuen versuchen mit neuen wörtern die das gleiche erklären bin ich auf apd gestoßen.

das ist eine PHP-Extension die genau macht was ich haben will.

Sie loggt jeden Funktionaufruf mit und speichert es in eine Datei, schön mit Zeitstempel und tiefe / bauminformation.

Genau muss ich mir die Files noch ansehen, für Windows gibt es keinen Parser und mein Xampp läuft nunmal hier unter Windows ^^, also werde ich da selbst ran müssen. Aber die Infos an sich sind schonmal da.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...