fehlersuche und debugging

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fehlersuche und debugging

    da mich hier in den letzten tagen einige leute gewaltig genervt haben, weil sie kein vernünftiges debugging betreiben, habe ich jetzt mal ein ausführlicheres tutorial zu dem thema verfaßt. das werde ich (und könnt ihr auch) in zukunft den leuten dann um die ohren hauen.

    der link

    bitte an die profis, auch mal alles durchlesen. möglicherweise habe ich das ein oder andere vergessen, das noch wichtig ist. oder mir sind selber fehler unterlaufen, was natürlich peinlich wäre.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

  • #2
    Habs nur überflogen:
    http://www.peterkropff.de/site/tutor...ler/schuld.htm <- da hab ich einmal vart_dump gefunden.


    Ansonsten würde ich dich bitten, doch auch noch die eine tolle Fkt. aus meiner Signatur mit einzubauen - die Rede ist natürlich von debug_backtrace.

    Das wär super ;-)
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      wenn du das mal richtig liest, baue ich auch dein debug_backtrace ein

      peter
      Zuletzt geändert von Kropff; 18.01.2007, 17:56.
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Seite "erster Schritt":
        Nun hat man die Möglichkeit, verschiedene Bedingungen zu definieren, also zum Beispiel E_ALL - E_ERROR.
        Ein Minuszeichen?

        Bei Einstellung von error_reporting über die php.ini ist laut Manual die Tilde zu verwenden, E_ALL & ~ E_NOTICE - und bei error_reporting() E_ALL ^ E_NOTICE
        E_ALL - E_NOTICE, also alle Fehler zeigen ohne Hinweise.

        Aber bitte! Wirklich nur im Notfall. Oder wenn ihr gerade erst mit PHP anfangt, und noch keine Lust auf Feinheiten habt.
        "Was Hänschen nicht lernt, lernt Hans nimmermehr ..."
        - diese "Ausrede" vorzuschlagen solltest du also noch mal überdenken.


        Die Formatierung solltest du auch noch mal überdenken - auf der Seite zu mysql_error sehe ich von
        $db = mysql_connect ($host, $user, $password) or die (mysql_error());
        nur das bis zum "...or" (beispielsweise), wenn mein Browserfenster schmaler ist. Schrift in gleicher Farbe wie Hintergrund des umgebenden Bereiches ausserhalb des <pre> ist da keine so glückliche Wahl.


        Seite "unerklärliche Phänomene":
        Dass eine Zuweisung immer true ergibt, ist nicht true: Der Wert eines Zuweisungsausdrucks ist der zugewiesene Wert.
        if($a = 0) ist nicht erfüllt, und if($b = false) auch nicht.
        Für Vergleiche nimmt man mindestens zwei Gleichheitszeichen (drei für Vergleiche auf Binärebene).
        "Binärebene"?
        Vergleich auf Wertegleichheit und Typengleichheit kommt der Sache irgendwie näher.



        Das war's vom ersten, etwas gründlicheren Überfliegen.
        Ein paar Rechtschreibfehler/Typos sind auch noch drin, aber die einzeln aufzuzählen hab ich gerade keine Lust :-)
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ein Minuszeichen?
          hat mich auch ein wenig überrascht, aber es funktioniert. in beiden fällen (php.ini, php-datei). werde ich ggf. noch anpassen.
          OffTopic:
          diese "Ausrede" vorzuschlagen solltest du also noch mal überdenken.

          denkt an mein tut zum thema register_globals
          Die Formatierung solltest du auch noch mal überdenken
          ich gehe von einer auflösung von 1024x786 bei voller größe des browser aus. da paßt es. ich möchte das auch nicht weiter reduzieren.
          Schrift in gleicher Farbe wie Hintergrund des umgebenden Bereiches
          ist meine ci hat sich auch noch keiner beschwert.
          Vergleich auf Wertegleichheit und Typengleichheit kommt der Sache irgendwie näher.
          stimmt, habe letzteres vergessen
          OffTopic:
          if($a = 0) ist nicht erfüllt, und if($b = false) auch nicht.

          ich weiss, aber ich denke, dass es in diesem zusammenhang nicht sooo wichtig ist. geht ja ums prinzip, also die sache mit einfachen =

          gruß
          peter
          EDIT:
          upsi, bin irgendwie durcheinander gekommen mit zitat und ot
          Zuletzt geändert von Kropff; 18.01.2007, 20:21.
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            @FSGB: Was für Drogen nimmst du eigentlich?
            Deine Seite ist nicht valide. Sie hat 9 Errors und 1 Warning

            Und das @ ist nicht grundsätzlich verboten. Beispiel wenn du getimagesize() verwendest. Manchmal neigt ein Server dazu, dir wilde Fehlermeldungen an Kopf zu schmeißen, weil du den Dateitypen mit PHP nicht zuverlässig prüfen kannst.
            Sunshine CMS
            BannerAdManagement
            Borlabs - because we make IT easier
            Formulargenerator [color=red]Neu![/color]
            Herkunftsstatistik [color=red]Neu![/color]

            Kommentar


            • #7
              Original geschrieben von Kropff
              OffTopic:
              if($a = 0) ist nicht erfüllt, und if($b = false) auch nicht.

              ich weiss, aber ich denke, dass es in diesem zusammenhang nicht sooo wichtig ist. geht ja ums prinzip, also die sache mit einfachen =
              mir hat deine ausführung dazu auch nicht so gefallen - ist aber klar, woraus du hinaus möchtest.
              es ist wahr, dass es ein beliebter fehler ist, bei einem vergleich "=" anstelle von "== "zu verwenden. aber wirklich nur bei einem vergleich. das solltest du noch mehr betonen.

              weil z.b., "if($fp=fopen($file, 'r')){...fread()..etc.}" ist ja kein vergleich.

              Kommentar


              • #8
                wird korrigiert und angepaßt

                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Überblick: Fatal Error
                  ... ihr ganz großen Mist gebaut, zum Beispiel eine Endlosschleife produziert, die irgendwann den Speicher eures Servers zum Überlaufen bringt.
                  PHP-Code:
                  while(1){

                  Bringt den speicher sicher nicht zum überlaufen mal abgesehen davon
                  dass "der (haupt)speicher" nicht überlaufen kann.
                  Hier würde ich eine concisere erklärung bringen. Zum beispiel einen
                  speicherzugriffsfehler, oder wenn ein alloc schief geht weil das system
                  keinen speicherplatz mehr hohlen kann.

                  Überblick: Parse Error
                  Dabei handelt es sich um einen Rechtschreibfehler, also wenn eure Syntax nicht den Vorgaben von PHP entspricht
                  Auch hier würde ich nicht so lapidar erklären. Die syntax einer sprache
                  ist nicht nur verletzt wenn unbekannte (falsch geschriebene) token benutzt
                  werden sondern auch dann wenn eine sequenz keinen ausdruck produzieren
                  kann. Das kann der fall sein obwohl alle token richtig geschrieben wurden.
                  Die sequenz entspricht in diesem fall nur keiner der produktionsregeln.
                  Es kommt also auch auf die anordnung der token an. Es geht also
                  auch um grammatik.

                  Die Kaputte Datenbank: Die Sache mit dem Rückgabewert
                  Wenn eine Abfrage erfolgreich ausgeführt wurde, so wird im Erfolgsfall ein true zurückgeliefert, ansonsten ein false
                  Es wäre schon schön wenn alle php funktionen die nur seiteneffekte haben
                  oder prädikate sind das so machen würden.
                  Bei datenbankabfragen bekommt man aber im erfolgsfall ein resourcehandle
                  zurück dass nur aufgrund der eigenheiten von php als nicht falsch interpretiert
                  wird.

                  [i]Schuld und Sühne: Ok ich bin schuld und nun?[i]
                  Das Zauberwort heißt Testausgaben! ....
                  Nein die zauberworte heissen unittest, funktionaltest und integrationtest.
                  Diesen kompletten abschnitt halte ich für suboptimal weil eine, in meinen
                  augen, nicht geeignete methode zur fehlerbestimmung genutzt werden soll.

                  Ansonsten ein schöner artikel in lockerem stil mit eingestreutem humor.
                  Das fsgb gefällt mir


                  greets
                  (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                  Kommentar


                  • #10
                    Sollte ich ab sofort einen von euch in meinem Lieblingsforum erwischen, der nicht mit print_r und vart_dump arbeitet,
                    ich bin mir ganz ganz ganz dolle sicher das du kurz davor noch von VAR_DUMP geredet hast

                    ansonsten schönes teil xP liest sich richtig angenehm.

                    ps: mein lieblingsspruch
                    Der Fehler sitzt IMMER mindestens 50 cm VOR dem BILDSCHRIM.

                    (Grossgeschriebenes Besonders Betonen)

                    achja Kropff haste noch nenn tip für jemanden der Dieses Leidliche ZEUG unterrichten muss.
                    Bitte Beachten.
                    Foren-Regeln
                    Danke

                    Kommentar


                    • #11
                      Den Fehler mit vart_dump hab ich doch schon im 1. Post erwähnt ...
                      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                      var_dump(), print_r(), debug_backtrace und echo.
                      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                      Kommentar


                      • #12
                        Original geschrieben von Shurakai
                        Den Fehler mit vart_dump hab ich doch schon im 1. Post erwähnt ...
                        08:29 <-- siehe uhrzeit ... Kopf noch mit decke und kissen bewaffnet und weigerte sich diese abzugeben.

                        da muss ich dann wohl einfach als ich den fehler entdeckt hatte deinen post nicht wahr genommen haben ...

                        naja mein kopf weigert sich noch immer kissen und decke abzugeben ... -.-
                        Bitte Beachten.
                        Foren-Regeln
                        Danke

                        Kommentar


                        • #13
                          nt


                          An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                          Kommentar


                          • #14
                            so, ich habe jetzt mal ein paar sachen umformuliert oder geändert. bitte bedenkt aber immer eines. das richtet sich an änfänger! ist also für die ersten schritte gedacht. ich will die leute nicht überfordern, z.b.
                            closure

                            Die syntax einer sprache ist nicht nur verletzt wenn unbekannte (falsch geschriebene) token benutzt werden sondern auch dann wenn eine sequenz keinen ausdruck produzieren kann. Das kann der fall sein obwohl alle token richtig geschrieben wurden. Die sequenz entspricht in diesem fall nur keiner der produktionsregeln. Es kommt also auch auf die anordnung der token an. Es geht also auch um grammatik.
                            wenn du das so formulieren kannst, dass es auch anfänger begreifen, baue ich es ein.

                            falls ihr noch fehler findet oder kritik anbringen woll, einfach bescheid sagen.

                            @benny-one
                            ich weiss, das meine seiten nicht valide sind, hängt mit meinem analyse-programm und einem js-pfusch zusammen. ist mir im moment aber egal.

                            gruß
                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              http://users.skynet.be/mgueury/mozilla/ nimm die Beta mal. Die prüft die Seiten richtig.
                              Sunshine CMS
                              BannerAdManagement
                              Borlabs - because we make IT easier
                              Formulargenerator [color=red]Neu![/color]
                              Herkunftsstatistik [color=red]Neu![/color]

                              Kommentar

                              Lädt...
                              X