Wie debuggen Sie PHP-Skripte?

stimmen
405

Wie debuggen Sie PHP - Skripte?

Ich bin mir dessen bewusst grundlegende Debuggen wie die Fehlerberichterstattung verwenden. Der Haltepunkt Debuggen in PHPEclipse ist auch sehr nützlich.

Was ist die beste (in Bezug auf schnelle und einfache) Weise in PhpStorm oder einer anderen IDE zu debuggen?

Veröffentlicht am 04/08/2008 um 00:18
quelle vom benutzer
In anderen Sprachen...                            


30 antworten

stimmen
145

Versuchen Sie Eclipse PDT eine Eclipse - Umgebung einrichten , die Funktionen hat das Debuggen wie Sie erwähnt haben . Die Fähigkeit , in den Code zu Schritt ist eine viel bessere Möglichkeit , die alte Methode der var_dump zu debuggen dann und an verschiedenen Punkten zu drucken , um zu sehen , wo Ihr Fluss schief geht. Wenn alles andere aber und alles , was ich habe , ist SSH und vim ich noch var_dump()/ die()zu finden , wo der Code nach Süden geht.

Beantwortet am 04/08/2008 um 00:28
quelle vom benutzer

stimmen
80

Sie können FirePHP verwenden ein Add-on zu Firebug zu debuggen PHP in der gleichen Umgebung wie Javascript.

Ich benutze auch Xdebug bereits erwähnt PHP für die Profilierung.

Beantwortet am 05/08/2008 um 18:22
quelle vom benutzer

stimmen
38

Dies ist meine kleine Debug-Umgebung:

error_reporting(-1);
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_BAIL, 0);
assert_options(ASSERT_QUIET_EVAL, 0);
assert_options(ASSERT_CALLBACK, 'assert_callcack');
set_error_handler('error_handler');
set_exception_handler('exception_handler');
register_shutdown_function('shutdown_handler');

function assert_callcack($file, $line, $message) {
    throw new Customizable_Exception($message, null, $file, $line);
}

function error_handler($errno, $error, $file, $line, $vars) {
    if ($errno === 0 || ($errno & error_reporting()) === 0) {
        return;
    }

    throw new Customizable_Exception($error, $errno, $file, $line);
}

function exception_handler(Exception $e) {
    // Do what ever!
    echo '<pre>', print_r($e, true), '</pre>';
    exit;
}

function shutdown_handler() {
    try {
        if (null !== $error = error_get_last()) {
            throw new Customizable_Exception($error['message'], $error['type'], $error['file'], $error['line']);
        }
    } catch (Exception $e) {
        exception_handler($e);
    }
}

class Customizable_Exception extends Exception {
    public function __construct($message = null, $code = null, $file = null, $line = null) {
        if ($code === null) {
            parent::__construct($message);
        } else {
            parent::__construct($message, $code);
        }
        if ($file !== null) {
            $this->file = $file;
        }
        if ($line !== null) {
            $this->line = $line;
        }
    }
}
Beantwortet am 29/06/2009 um 14:40
quelle vom benutzer

stimmen
32

Xdebug und das DBGp Plugin für Notepad ++ für schwere Fehler Jagd, FirePHP für leichte Sachen. Schnell und dreckig? Nichts schlägt DBUG .

Beantwortet am 15/09/2008 um 21:23
quelle vom benutzer

stimmen
26

XDebug ist von wesentlicher Bedeutung für die Entwicklung. Installiere ich es vor allen anderen Erweiterung. Es gibt Sie Spuren auf jedem Fehler - Stack und die Profilerstellung einfach aktivieren.

Für einen schnellen Blick auf eine Datenstruktur verwenden var_dump(). Verwenden Sie nicht , print_r()weil Sie mit ihm umgeben werden müssen <pre>und es druckt nur eine var auf einmal.

<?php var_dump(__FILE__, __LINE__, $_REQUEST); ?>

Für eine echte Debugging - Umgebung das Beste , was ich gefunden habe , ist Komodo IDE aber es kostet $$.

Beantwortet am 22/08/2008 um 16:43
quelle vom benutzer

stimmen
19

PhpEd ist wirklich gut. Sie können in / über / aus Funktionen Schritt. Sie können Ad-hoc-Code, überprüfen Variablen, ändern Variablen ausgeführt werden. Es ist erstaunlich.

Beantwortet am 05/02/2009 um 10:16
quelle vom benutzer

stimmen
17

1) I verwenden print_r (). In Textmate, ich habe einen Ausschnitt für ‚pre‘, die auf diese erweitert:

echo "<pre>";
print_r();
echo "</pre>";

2) Ich verwende Xdebug, aber nicht in der Lage, die GUI bekommen Recht auf meinem Mac zu arbeiten. Es mindestens druckt eine lesbare Version des Stack-Trace aus.

Beantwortet am 07/08/2008 um 01:25
quelle vom benutzer

stimmen
16

In aller Ehrlichkeit, eine Kombination aus Druck und print_r (), um die Variablen zu drucken. Ich weiß, dass viele es vorziehen, andere fortgeschrittenere Methoden zu verwenden, aber ich finde dies am einfachsten zu bedienen.

Ich werde sagen, dass ich nicht in vollem Umfang dies zu schätzen wissen hätte, bis ich eine Mikroprozessor-Programmierung an der Uni war und war nicht in der Lage, auch diese zu nutzen.

Beantwortet am 04/08/2008 um 22:28
quelle vom benutzer

stimmen
16

Ich habe die verwendet Zend Studio (5.5) zusammen mit Zend Platform . Das gibt richtige Debuggen Haltepunkte / Schritt über den Code usw., obwohl zu einem Preis.

Beantwortet am 04/08/2008 um 00:20
quelle vom benutzer

stimmen
14

Xdebug von Derick Rethans, ist sehr gut. Ich habe es vor einiger Zeit und fand es nicht so einfach war , zu installieren. Sobald Sie fertig sind, werden Sie nicht verstehen , wie Sie ohne es geschafft :-)

Es gibt einen guten Artikel über den Zend Developer Zone (auf Linux - Installation scheint nicht einfacher) und sogar eine Firefox - Plugin , das ich nie benutzt.

Beantwortet am 04/08/2008 um 22:07
quelle vom benutzer

stimmen
11

Ich benutze Netbeans mit XDebug und den einfachen XDebug FireFox Add-on

Der Add-on ist wichtig, wenn Sie MVC-Projekte debuggen, weil die normale Art und Weise XDebug in Netbeans läuft, ist die DBUG Sitzung über die URL zu registrieren. Mit dem Add-on in FireFox installiert haben, würden Sie Ihre Netbeans Projekteigenschaften einstellen -> Ausführen configuratuion -> Erweitert und wählen Sie „Öffnen Sie nicht Web-Browser“ Sie können jetzt Ihre Haltepunkte setzen und den Debug-Sitzung mit Strg-F5 wie gewohnt starten . Öffnen Sie FireFox und Rechtsklick auf das Add-On-Symbol in der rechten unteren Ecke Überwachung für Stützpunkte zu starten. Wenn der Code den Haltepunkt erreicht wird es stoppen und Sie können Ihre variable Zustände und Call-Stack untersuchen.

Beantwortet am 09/07/2010 um 04:14
quelle vom benutzer

stimmen
11

Ich benutze Netbeans mit XDebug. Überprüfen Sie es auf ihrer Website heraus für Dokumente auf , wie es zu konfigurieren. http://php.netbeans.org/

Beantwortet am 26/08/2008 um 16:04
quelle vom benutzer

stimmen
10

Ausgabepufferung ist sehr nützlich, wenn Sie nicht wollen, die Ausgabe zu vermasseln. Ich tue dies in einem Einzeiler, die ich kommentieren / uncomment nach Belieben

 ob_start();var_dump(); user_error(ob_get_contents()); ob_get_clean();
Beantwortet am 22/10/2008 um 10:16
quelle vom benutzer

stimmen
9

Phpedit hat in Debugger einen eingebauten, aber ich in der Regel am Ende echo (); und print_r (); die altmodische Art und Weise !!

Beantwortet am 17/09/2008 um 11:14
quelle vom benutzer

stimmen
8

Für die wirklich gritty Probleme , die zu der Zeit wäre aufwendig print_r / Echo verwenden , um herauszufinden , ich meine IDE verwenden (PhpEd) Debug - Funktion. Im Gegensatz zu anderen IDEs ich verwendet habe, erfordert PhpEd so ziemlich keine Einrichtung. der einzige Grund , warum ich es nicht für Probleme , verwende ich begegnen , ist , dass es schmerzhaft langsam. Ich bin nicht sicher , dass Langsamkeit zu PhpEd oder jeder PHP - Debugger spezifisch ist . PhpEd ist nicht frei , aber ich glaube , es verwendet eine des Open-Source - Debugger (wie XDebug zuvor erwähnt) sowieso. Der Vorteil mit PhpEd, wieder ist, dass es keine Einrichtung erfordert , die ich in der Vergangenheit wirklich ziemlich langweilig gefunden haben.

Beantwortet am 22/08/2008 um 16:33
quelle vom benutzer

stimmen
4

Manuelles Debugging ist in der Regel schneller für mich - var_dump()und debug_print_backtrace()sind alle Werkzeuge , die Sie benötigen , um Ihre Logik zu bewaffnen mit.

Beantwortet am 22/08/2008 um 16:36
quelle vom benutzer

stimmen
3

Ich benutze oft CakePHP wenn Rails nicht möglich ist. Um Fehler zu debuggen ich in der Regel finden die error.logim tmp - Ordner und Schwanz es im Terminal mit dem Befehl ...

tail -f app/tmp/logs/error.log

Es gibt die Sie Dialog von Kuchen laufen, was los ist, was ziemlich praktisch ist, wenn Sie für die Ausgabe zu wollen, dass es Sie können Mitte-Code verwenden.

$this->log('xxxx');

Dies kann man in der Regel eine gute Vorstellung davon, was los ist / falsch.

Beantwortet am 10/05/2010 um 10:29
quelle vom benutzer

stimmen
3

Nun, bis zu einem gewissen Grad hängt es ab, wo Dinge Süden gehen. Das ist das erste, was ich versuche, zu isolieren und dann werde ich Echo / print_r () verwendet, falls nötig.

NB: Sie Jungs wissen, dass Sie als zweites Argument wahr passieren kann print_r () und es wird die Ausgabe statt Druck zurückgeben? Z.B:

echo "<pre>".print_r($var, true)."</pre>";
Beantwortet am 18/09/2008 um 04:17
quelle vom benutzer

stimmen
2

Es gibt viele PHP Debugging-Techniken, die Ihnen unzählige Stunden sparen können bei der Codierung. Eine wirksame, aber grundlegende Debugging-Technik ist einfach auf der Fehlerberichterstattung drehen. Eine weitere etwas fortgeschrittenere Technik beinhaltet Druck-Anweisungen, die schwer fassbaren Fehler lokalisieren helfen können, durch die Anzeige, was tatsächlich auf den Bildschirm gehen. PHPEclipse ist eine Eclipse-Plug-in, dass Fehler gemeinsame Syntax markieren kann und mit einem Debugger verwendet wird in Verbindung Unterbrechungspunkte zu setzen.

display_errors = Off
error_reporting = E_ALL 
display_errors = On

und auch verwendet

error_log();
console_log();
Beantwortet am 01/10/2015 um 11:16
quelle vom benutzer

stimmen
2

Nusphere ist auch ein guter Debugger für PHP nusphere

Beantwortet am 29/05/2012 um 13:43
quelle vom benutzer

stimmen
2

Komodo IDE funktioniert gut mit xdebug, auch für das Remote-Debugging. Es braucht minimale Menge an Konfiguration. Alles, was Sie ist eine Version von PHP benötigen, die Komodo lokal verwenden können, auf einem Haltepunkt durch den Code zu treten. Wenn Sie das Skript in Komodo-Projekt importiert haben, dann können Sie Stützpunkte mit einem Mausklick gesetzt, wie Sie es in Eclipse für das Debuggen von einem Java-Programm festgelegt würden. Remote-Debugging ist offensichtlich komplizierter, um es richtig zu arbeiten (Sie können die Remote-URL mit einer PHP-Skript zur Karte haben in Ihrem Arbeitsbereich) als ein lokales Debugging-Setup, die recht einfach zu konfigurieren, wenn Sie auf einem MAC oder einem Linux-Desktop sind .

Beantwortet am 22/08/2008 um 16:44
quelle vom benutzer

stimmen
2

print_r (debug_backtrace ());

oder etwas ähnliches :-)

Beantwortet am 04/08/2008 um 00:32
quelle vom benutzer

stimmen
1

PHP DBG

Der Interactive Stepthrough PHP Debugger implementiert als SAPI-Modul, das Ihnen die vollständige Kontrolle geben geben kann über die Umwelt, ohne die Funktionalität oder die Leistung Ihres Codes zu beeinträchtigen. Es zielt darauf ab, ein leichtes, leistungsstark zu sein, einfache Debugging-Plattform für PHP zu verwenden 5.4+ und es out-of-Box mit PHP 5.6 ausgeliefert.

Funktionen:

  • Stepthrough Debugging
  • Flexible Haltepunkte (Klasse Methode, Funktion, Datei: Linie, Adresse, Opcode)
  • Einfacher Zugang zu PHP mit eingebauten in eval ()
  • Einfacher Zugang zu Zeit der Ausführung von Code
  • Userland-API
  • SAPI Agnostic - Einfache Integration
  • PHP-Konfigurationsdatei Unterstützung
  • JIT-Super-Globals - Stellen Sie Ihre eigenen !!
  • Optional Readline- Support - Komfortable Terminalbetrieb
  • Remote-Debugging-Unterstützung - Gebündelte Java GUI
  • Einfache Operation

Siehe die Screenshots:

PHP DBG - Stepthrough Debugging - Screenshot

PHP DBG - Stepthrough Debugging - Screenshot

Homepage: http://phpdbg.com/

PHP - Fehler - Bessere Fehlerberichterstattung für PHP

Dies ist sehr einfach Bibliothek zu verwenden (eigentlich eine Datei) Ihren PHP-Skripte zu debuggen.

Das einzige, was Sie tun müssen, ist eine Datei, wie unten schließen (am Anfang auf Ihrem Code):

require('php_error.php');
\php_error\reportErrors();

Dann werden alle Fehler geben Sie Informationen, wie zB Backtrace, Code Kontext, Funktionsargumente, Servervariablen, usw. Zum Beispiel:

PHP-Fehler |  Verbessern der Fehlerberichterstattung für PHP - Screenshot von Backtrace PHP-Fehler |  Verbessern der Fehlerberichterstattung für PHP - Screenshot von Backtrace PHP-Fehler |  Verbessern der Fehlerberichterstattung für PHP - Screenshot von Backtrace

Features sind:

  • trivial zu verwenden, es ist nur eine Datei
  • für normale und AJAXy Anfragen Fehler im Browser angezeigt
  • AJAX-Anfragen werden angehalten, so dass Sie sie automatisch erneut ausführen zu
  • macht Fehler so streng wie möglich (Code-Qualität fördert, und neigt dazu, die Leistung zu verbessern)
  • Code-Schnipsel über den gesamten Stack-Trace
  • liefert mehr Information (wie Vollfunktionssignaturen)
  • behebt einige Fehlermeldungen, die einfach falsch sind
  • Satzstellung markieren
  • sieht gut aus!
  • Anpassung
  • drehen manuell ein- und ausschalten
  • laufen bestimmte Abschnitte ohne Fehlerberichterstattung
  • ignorieren Dateien in dem Sie markieren Code in Stack-Trace zu vermeiden
  • Anwendungsdateien; diese werden priorisiert, wenn ein Fehler Streik!

Homepage: http://phperror.net/

GitHub: https://github.com/JosephLenton/PHP-Error

Meine Gabel (mit zusätzlichen Korrekturen): https://github.com/kenorb-contrib/PHP-Error

DTrace

Wenn Ihr System unterstützt DTrace Dynamic Tracing (standardmäßig installiert auf OS X) und Ihre PHP mit den DTrace - Prüfpunkte aktiviert (kompiliert --enable-dtrace) , die standardmäßig sein sollte, kann dieser Befehl Sie debuggen PHP - Skript helfen , ohne Zeit:

sudo dtrace -qn 'php*:::function-entry { printf("%Y: PHP function-entry:\t%s%s%s() in %s:%d\n", walltimestamp, copyinstr(arg3), copyinstr(arg4), copyinstr(arg0), basename(copyinstr(arg1)), (int)arg2); }'

Also angesichts der folgenden Alias wurde von Ihnen hinzugefügt rc - Dateien (zB ~/.bashrc, ~/.bash_aliases):

alias trace-php='sudo dtrace -qn "php*:::function-entry { printf(\"%Y: PHP function-entry:\t%s%s%s() in %s:%d\n\", walltimestamp, copyinstr(arg3), copyinstr(arg4), copyinstr(arg0), basename(copyinstr(arg1)), (int)arg2); }"'

Sie können Ihr Skript mit leicht zu merkenden Alias verfolgen: trace-php.

Hier ist weiter fortgeschritten DTrace - Skript, speichern Sie es in dtruss-php.d, machen es ausführbar ( chmod +x dtruss-php.d) und auszuführen:

#!/usr/sbin/dtrace -Zs
# See: https://github.com/kenorb/dtruss-lamp/blob/master/dtruss-php.d

#pragma D option quiet

php*:::compile-file-entry
{
    printf("%Y: PHP compile-file-entry:\t%s (%s)\n", walltimestamp, basename(copyinstr(arg0)), copyinstr(arg1));
}

php*:::compile-file-return
{
    printf("%Y: PHP compile-file-return:\t%s (%s)\n", walltimestamp, basename(copyinstr(arg0)), basename(copyinstr(arg1)));
}

php*:::error
{
    printf("%Y: PHP error message:\t%s in %s:%d\n", walltimestamp, copyinstr(arg0), basename(copyinstr(arg1)), (int)arg2);
}

php*:::exception-caught
{
    printf("%Y: PHP exception-caught:\t%s\n", walltimestamp, copyinstr(arg0));
}

php*:::exception-thrown
{
    printf("%Y: PHP exception-thrown:\t%s\n", walltimestamp, copyinstr(arg0));
}

php*:::execute-entry
{
    printf("%Y: PHP execute-entry:\t%s:%d\n", walltimestamp, basename(copyinstr(arg0)), (int)arg1);
}

php*:::execute-return
{
    printf("%Y: PHP execute-return:\t%s:%d\n", walltimestamp, basename(copyinstr(arg0)), (int)arg1);
}

php*:::function-entry
{
    printf("%Y: PHP function-entry:\t%s%s%s() in %s:%d\n", walltimestamp, copyinstr(arg3), copyinstr(arg4), copyinstr(arg0), basename(copyinstr(arg1)), (int)arg2);
}

php*:::function-return
{
    printf("%Y: PHP function-return:\t%s%s%s() in %s:%d\n", walltimestamp, copyinstr(arg3), copyinstr(arg4), copyinstr(arg0), basename(copyinstr(arg1)), (int)arg2);
}

php*:::request-shutdown
{
    printf("%Y: PHP request-shutdown:\t%s at %s via %s\n", walltimestamp, basename(copyinstr(arg0)), copyinstr(arg1), copyinstr(arg2));
}

php*:::request-startup
{
    printf("%Y, PHP request-startup:\t%s at %s via %s\n", walltimestamp, basename(copyinstr(arg0)), copyinstr(arg1), copyinstr(arg2));
}

Homepage: dtruss-Lampe bei GitHub

Hier ist einfach Nutzung:

  1. Run: sudo dtruss-php.d.
  2. Auf einem anderen Terminal laufen: php -r "phpinfo();".

Um zu testen , dass, können Sie zu jedem docroot gehen mit index.phpund laufen PHP builtin - Server durch:

php -S localhost:8080

Danach können Sie die Website unter Zugriff auf http: // localhost: 8080 / (oder wählen , was Port für Sie bequem ist). Von dort einige Seiten Zugriff auf die Trace - Ausgabe zu sehen.

Hinweis: Dtrace auf OS X standardmäßig zur Verfügung steht, unter Linux müssen Sie wahrscheinlich dtrace4linux für einige andere oder prüfen Alternativen .

Siehe: Verwendung von PHP und DTrace bei php.net


SystemTap

Überprüft alternativ für SystemTap Verfolgung von SystemTap SDT Entwicklungspaket zu installieren ( zum Beispiel yum install systemtap-sdt-devel).

Es folgt ein Beispielskript ( all_probes.stp) zum Verfolgen aller Kern PHP statischen Prüfpunkte während der gesamten Dauer eines laufenden PHP - Skript mit SystemTap:

probe process("sapi/cli/php").provider("php").mark("compile__file__entry") {
    printf("Probe compile__file__entry\n");
    printf("  compile_file %s\n", user_string($arg1));
    printf("  compile_file_translated %s\n", user_string($arg2));
}
probe process("sapi/cli/php").provider("php").mark("compile__file__return") {
    printf("Probe compile__file__return\n");
    printf("  compile_file %s\n", user_string($arg1));
    printf("  compile_file_translated %s\n", user_string($arg2));
}
probe process("sapi/cli/php").provider("php").mark("error") {
    printf("Probe error\n");
    printf("  errormsg %s\n", user_string($arg1));
    printf("  request_file %s\n", user_string($arg2));
    printf("  lineno %d\n", $arg3);
}
probe process("sapi/cli/php").provider("php").mark("exception__caught") {
    printf("Probe exception__caught\n");
    printf("  classname %s\n", user_string($arg1));
}
probe process("sapi/cli/php").provider("php").mark("exception__thrown") {
    printf("Probe exception__thrown\n");
    printf("  classname %s\n", user_string($arg1));
}
probe process("sapi/cli/php").provider("php").mark("execute__entry") {
    printf("Probe execute__entry\n");
    printf("  request_file %s\n", user_string($arg1));
    printf("  lineno %d\n", $arg2);
}
probe process("sapi/cli/php").provider("php").mark("execute__return") {
    printf("Probe execute__return\n");
    printf("  request_file %s\n", user_string($arg1));
    printf("  lineno %d\n", $arg2);
}
probe process("sapi/cli/php").provider("php").mark("function__entry") {
    printf("Probe function__entry\n");
    printf("  function_name %s\n", user_string($arg1));
    printf("  request_file %s\n", user_string($arg2));
    printf("  lineno %d\n", $arg3);
    printf("  classname %s\n", user_string($arg4));
    printf("  scope %s\n", user_string($arg5));
}
probe process("sapi/cli/php").provider("php").mark("function__return") {
    printf("Probe function__return: %s\n", user_string($arg1));
    printf(" function_name %s\n", user_string($arg1));
    printf("  request_file %s\n", user_string($arg2));
    printf("  lineno %d\n", $arg3);
    printf("  classname %s\n", user_string($arg4));
    printf("  scope %s\n", user_string($arg5));
}
probe process("sapi/cli/php").provider("php").mark("request__shutdown") {
    printf("Probe request__shutdown\n");
    printf("  file %s\n", user_string($arg1));
    printf("  request_uri %s\n", user_string($arg2));
    printf("  request_method %s\n", user_string($arg3));
}
probe process("sapi/cli/php").provider("php").mark("request__startup") {
    printf("Probe request__startup\n");
    printf("  file %s\n", user_string($arg1));
    printf("  request_uri %s\n", user_string($arg2));
    printf("  request_method %s\n", user_string($arg3));
}

Verwendung:

stap -c 'sapi/cli/php test.php' all_probes.stp

Siehe: Mit SystemTap mit PHP DTrace Static Sonden bei php.net

Beantwortet am 21/03/2016 um 12:34
quelle vom benutzer

stimmen
1

Die meisten Fehler lassen sich leicht durch einfaches gefunden var_dumping einige der wichtigsten Variablen, aber es hängt natürlich ab , welche Art von Anwendung , die Sie entwickeln.

Für eine komplexere Algorithmen der Schritt- / Haltepunkt / watch-Funktionen sind sehr hilfreich (wenn nicht sogar notwendig)

Beantwortet am 10/05/2010 um 10:18
quelle vom benutzer

stimmen
1

Ich benutze Zend Studio für Eclipse mit dem Debugger gebaut. Es ist immer noch langsam im Vergleich zu Debuggen mit Eclipse PDT mit xdebug. Hoffentlich werden sie diese Probleme beheben, hat die Geschwindigkeit in den letzten Releases verbessert, aber immer noch über Dinge Schritt dauert 2-3 Sekunden. Die zend Firefox Toolbar macht wirklich die Dinge einfach (debug nächste Seite aktuelle Seite, etc). Auch bietet es einen Profiler, dass Ihr Code wird Benchmark und bieten Kreisdiagramme, die Ausführungszeit usw.

Beantwortet am 17/08/2008 um 19:38
quelle vom benutzer

stimmen
1

In einer Produktionsumgebung, lüge ich relevante Daten in das Fehlerprotokoll des Servers mit error_log ().

Beantwortet am 15/08/2008 um 05:23
quelle vom benutzer

stimmen
1

+1 für print_r (). Verwenden Sie es, den Inhalt eines Objekts oder einer Variable auskippen. Um es besser lesbar zu machen, tun Sie es mit einem Pre-Tag, so dass Sie nicht mit der Quelle ansehen müssen.

echo '<pre>';
print_r($arrayOrObject);

Auch var_dump ($ Sache) - das ist sehr nützlich, um die Art von subthings zu sehen

Beantwortet am 05/08/2008 um 01:49
quelle vom benutzer

stimmen
0

Normalerweise finde ich der Lage, eine benutzerdefinierte Log-Funktion erstellen, die auf Datei, Speichern Debug-Informationen zu speichern, und schließlich erneut Druck auf eine gemeinsame Fußzeile.

Sie können auch gemeinsame Ausnahmeklasse außer Kraft setzen, so dass diese Art der Fehlersuche halbautomatische ist.

Beantwortet am 22/10/2008 um 09:46
quelle vom benutzer

stimmen
0

Die integrierten Debugger, wo Sie die Werte der Variablen ändern beobachten können, wie Sie durch den Code Schritt sind wirklich cool. Sie erfordern jedoch Software-Setup auf dem Server und eine gewisse Konfiguration auf dem Client. Beide erfordern eine regelmäßige Wartung zu halten in gutem Zustand.

Ein print_r ist einfach zu schreiben und garantiert in jeder Einrichtung zu arbeiten.

Beantwortet am 22/08/2008 um 21:10
quelle vom benutzer

stimmen
0

Je nach Thema möchte ich eine Kombination von error_reporting (E_ALL), gemischt mit Echo-Tests (zu finden, die Codezeile / Datei der Fehler passiert ist in initally, du weißt, es ist nicht immer die Linie / Datei php sagt Ihnen, nicht wahr?), IDE Klammer Matching (zu lösen "Parse error: Syntaxfehler, unerwartete $ end" Probleme) und print_r (); Ausfahrt; Deponien (real Programmierer sehen die Quelle; p).

Sie können auch nicht schlagen phpdebug (check Source) mit "memory_get_usage ();" und "memory_get_peak_usage ();" die Problembereiche zu finden.

Beantwortet am 06/08/2008 um 16:46
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more