Dreihundertvierundsechzig

Wer will lesen, wie eine – halbwegs typische – Debug-Session abläuft?
Wer das nicht will, darf gleich weiter blättern.

Ich werde einige Fachbegriffe benutzen müssen. Die im einzelnen zu erklären oder auch nur zu verlinken, würde meinen Zeitrahmen für das Bloggen sprengen. Wer also nichts versteht, versäumt eigentlich nichts. Ich verspreche sogar, mich mit Zweideutigkeiten zurückzuhalten.

Es geht um ein Projekt in Client-Server-Architektur. Die Kommunikation läuft über TCP/IP. Auf meiner VM habe ich den Server laufen, auf dem Hostrechner den Client. Außerdem tracet Wireshark den Netzwerkverkehr auf den benutzten Ports mit.
Der Client ist – in diesem Szenario – schon fertig. Sofern ich da keinen Fehler mehr finde, bleibt er unverändert. Was ich jetzt testen und debuggen will ist der Server.
Der Sourcecode liegt grob in vorläufiger Form vor. Je nach den Ergebnissen des Debuggens kann ich ihn noch beliebig modifizieren und erweitern. Ich lade das Projekt in meine Entwicklungsumgebung und suche die Stelle im Code, bei der der TCP/IP-Server die Pakete empfängt. Dort setze ich einen Breakpoint (auch als Haltepunkt bekannt – und ja, daher kommt mein Nickname), werfe den Compiler an und starte den Server.
Dann wechsle ich zum Hostrechner und starte den Client. Dieser versucht, mit dem Server eine Verbindung aufzubauen und den Handshake auszuführen. Kann er natürlich nicht, weil der Server erst mal auf den Breakpoint gelaufen ist. Immerhin scheint alles mit den Ports und der Firewall zu passen.
In der IDE kann ich – wenn ich will – die Werte einzelner Variablen auslesen oder auch verändern. Ich habe eine Liste verschiedener Watches im Blick. Per Tastendruck steppe ich weiter im Programm.
Irgendwann stoße ich auf eine Verzweigung. Der Debugger läuft aber nicht in den Zweig, den ich erwartet hätte. Ich scrolle etwas hoch und finde eine Stelle, die ich in Verdacht habe. Auch dorthin setze ich einen Breakpoint. Dann setze ich den Server zurück und schieße den Client ab. Auch den Wireshark-Trace starte ich neu.
Also alles nochmal von Beginn: Server starten, Client starten, erster Breakpoint, zweiter Breakpoint. Ich steppe in die Funktion hinein, wechsle in die CPU-Ansicht, und vergleiche mit den Wireshark-Aufzeichnungen. Nach zwei Zeilen Code sehe ich das Problem. Ich ändere den Code an dieser Stelle und beginne wieder von vorn ..

Tja, so verbringe ich manchmal Stunde für Stunde. Macht nicht unbedingt Spaß, aber wenn ich in meinen Flow komme, sehe und höre ich nichts anderes mehr.

Über Anne Nühm (breakpoint)

Die Programmierschlampe.
Dieser Beitrag wurde unter Uncategorized abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

34 Antworten zu Dreihundertvierundsechzig

  1. Conchi schreibt:

    Hi du liebe,

    das kommt mir alles ziemlich bekannt vor, und ich bin froh,
    dass ich diese Arbeit nicht mehr beruflich machen muss.
    Aber ich bin mir sicher, dass du es noch hinbekommen hast,
    und das Problem beseitigen konntest!

    Vielen Dank auch für deinen Besuch in meinem neuen Blog
    und deinen Kommentar. Ich habe mich sehr darüber gefreut.

    LG an dich
    Conchi

    Like

    • breakpoint schreibt:

      Hi Conchi,

      das wusste ich ja gar nicht, dass du auch mal programmiert hast. 🙂

      Hoffentlich hast du mit deinem neuen Blog auf Dauer mehr Glück als mit dem alten.

      lg breakpoint

      Like

      • Conchi schreibt:

        Hi du liebe,

        ja, das ist auch schon einige Jahre her, und ich erzähle nicht oft davon.
        Der neue Blog gefällt mir sehr gut, und ich kann nun endlich wieder unbefangen öffentliche Einträge mit meinen Fotos schreiben und einstellen. Hier wurden ja immer meine Fotos schlecht bewertet, und das geht dort nicht. Zudem finde ich den Blog schon alleine dadurch, dass er ohne Werbung ist, wesentlich hochwertiger und schöner, als hier mit dem ganzen Werbemüll.

        Und es freut mich wirklich sehr, dass du mich auch dort besuchen kommst, und Kommentare schreibst!! 🙂 Tnx

        LG an dich
        Conchi

        Like

  2. ednong schreibt:

    Wenn man denn schon genötigt wird, hinterlasse ich der Käfer-Lady natürlich auch noch hier total CeBIT-müde einen Kommentar.

    Und verweise dabei mal freundlichst auf meinen Post dazu.

    Like

    • breakpoint schreibt:

      Käferlady?

      Das weiß ich schon, dass die CeBIT anstrengend ist. Und wenn dann noch eine lange An- und Abreise dazukommen .. (hihi, so habe ich letztes Jahr Carsten zum ersten Mal ins Bett gekriegt. :)) )

      Like

    • breakpoint schreibt:

      Dreimal habe ich versucht auf deinen CeBIT-Post einen Kommentar zu hinterlassen. Jedesmal kam eine Fehlermeldung von wegen „illegal content“ – dabei war das reiner Text ohne Formatierung, Links oder Smileys:

      „Wie bist du denn an ein Presse-Ticket gekommen?

      Amüsierst dich im Presse-Shuttle, während ich gestern den ganzen Tag über immer wieder irgendwelche Batch Jobs laufen ließ.“

      Hat sich deine BlogSW etwa an den Batch Jobs gestört?

      Like

      • ednong schreibt:

        Hm,
        kannst du mir mal den Text deines Post als Mail zukommen lassen? Vielleicht waren da Zeichen enthalten, die nicht zulässig sind. Ich habe gerade von einem anderen Browser ohne Anmeldung problemlos einen Kommentar erstellen können.

        „Käfer-Lady“ wegen der Bugs. Könnte auch Käfer-Jägerin sagen, passt wohl besser 😉

        Like

        • breakpoint schreibt:

          Der Text steht in meinem obigem Kommentar zwischen den Quotes. ä, ö und ß sollte der Filter doch verkraften.

          Käfer .. da dachte ich erst an den Marienkäfer, den du in deinem Blog als Profilbild nutzt.
          Mit dem Debuggen assoziiere ich insbesondere Wanzen („Entwanzerin“ würde wohl von der Wortbedeutung noch am besten passen, gefällt mir aber trotzdem nicht), obwohl es ursprünglich ja mal eine Motte gewesen sein soll.

          Like

  3. ednong schreibt:

    So, etwas Kraft gesammelt 😉

    Also, folgendes verstehe ich nicht:
    „Ich habe eine Liste verschiedener Watches im Blick.“

    Was bedeutet das? Oder präziser: was genau meinst du hier mit „Watches“? Was stellen die dar?

    Like

    • breakpoint schreibt:

      Mit Watches (jetzt fällt mir gerade der deutsche Terminus nicht ein) werden die aktuellen Werte von Variablen oder Feldern ständig angezeigt, so dass ich während des Debuggens immer weiß, ob Var1 gleich 63 oder gleich 42 ist (willkürliches Beispiel).

      Und wenn du wieder fit bist, würde ich mich über eine Reaktion bzgl. des GNIT-Links freuen.

      Like

      • ednong schreibt:

        Ah, dann weiß ich, was du meinst. keine Ahnung, wie das Fenster heißt, ich kenne es aber.

        Reaktion bzgl. GNIT? Ich steh auf dem Schlauch.

        Like

        • breakpoint schreibt:

          Follow the yellow brick road .. ne einfach dem Link.
          Ich habe mich damals so sehr über deinen Kommentar amüsiert. 😀

          Like

          • ednong schreibt:

            Ja, die Doppeldeutigkeit fiel mir auch während des Schreibens auf – paßte irgendwie gut in die Reihenfolge der Kommentare. Aber wieso meine Reaktion? Wo soll/muß/darf ich reagieren? Sorry, irgendwie hab ich das Schlauchende noch nicht gefunden …

            Like

            • breakpoint schreibt:

              In deinem Kommentar damals wäre Haltestelle IMHO passender gewesen. Aber so war es halt lustiger.
              Als Reaktion hätte ich mich über irgendeine Äußerung deinerseits (dort oder hier) gefreut, muss aber auch nicht sein – du wirst jedenfalls nicht dazu genötigt.

              Like

            • ednong schreibt:

              Äh, wie gesagt – Doppeldeutigkeit bzgl. Breakpoint ist aufgefallen. Haltestelle für ein Taxi? Hm. Also ich hätte da eigentlich immer Haltepunkt oder Startpunkt gewählt. Und nein, ich fühl mich überhaupt nicht genötigt, nein überhaupt nicht
              *aua, ja, ich hör ja schon auf* 😉

              Dann genieße dein WE mal fein ohne Haltepunkt, höchtens mit Höhepunkt(en) …

              Like

            • breakpoint schreibt:

              Besonders lustig fand ich auch die Deutung, dass der sechste Fahrgast bei mir sei. ;D

              Danke!
              Höhepunkte gab es bereits.
              Und das WE hat gerade erst begonnen. 😀

              Like

  4. idgie13 schreibt:

    Damit verbringe ich auch meine Tage – und wahlweise die Nächte … B)

    Like

  5. Gibts für den PC keine Freezer (früher auch bekannt als Action Replay) mehr? Da konnte man beim Auftreten eines Bugs den Rechner anhalten, die Bugadresse anspringen, rückwärts tracen (woher kams?), dort direkt im RAM hotfixen/rumpfuschen und den Ausführungszeiger des Rechners auf eine vorherige Addy setzen und den ganzen Spaß nochmal probieren. Wenns dann hingehauen hat wußte man wo man einen Bock geschossen hat. Man mußte allerdings wissen, wie der Maschinencode mit dem C-Code korrespondiert;)

    Like

  6. breakpoint schreibt:

    VierhundertDa der Webmasterfriday diesmal ein interessantes Thema hat, das ich auch recht früh mitbekommen habe, stelle ich das Thema, das ich für Freitag vorgesehen habe, erst mal zurück und erzähle stattdessen über meinen Arbeitstag.

    Da ich selbständig bin, …

    Like

  7. breakpoint schreibt:

    VierhundertzweiIch bin immer noch beim Testen (eigentlich wollte ich bereits am Freitag darüber schreiben, aber heute reicht auch noch. Über das Wochenende gibt es nichts außergewöhnliches zu berichten. Ihr habt also nichts verpasst).

    Ich überprüfe und validiere n…

    Like

  8. breakpoint schreibt:

    SiebenhundertzwölfFast immer wenn bei einer bestehenden Anwendung neue Features gewünscht werden, gibt es Probleme mit der Architektur.

    Wenn ich ein neues Projekt aufsetze, habe ich im Allgemeinen vorher ausführlich mit dem Kunden abgestimmt, was denn die neue Softwa…

    Like

  9. Ah, der gute alte Flow. Wenn Du etwas davon übrig hast, könnte ich auch mal wieder ein Häppchen davon gebrauchen :-).

    Like

  10. Pingback: Zwölfhunderteins | breakpoint

  11. Pingback: Siebenhundertzwölf | breakpoint

  12. Pingback: Vierhundert | breakpoint

  13. Pingback: Vierhundertzwei | breakpoint

  14. Pingback: breakpoint’s Wayback Archive #1C //1750 | breakpoint

  15. Pingback: No Girls‘ Day //2268 | breakpoint

  16. Pingback: Wannabe Bug Buster //2302 | breakpoint

Hinterlasse einen Kommentar