Zur Abwechslung mal wieder drei kleine Computergeschichtchen.
Einer meiner Mitarbeiter schreibt derzeit an einer Windows-Anwendung, mit der bestimmte Daten ausgewertet werden sollen.
Als ich ihn auf seine Fortschritte ansprach, berichtete er mir von einem Problem. Und zwar geht es um ein Kontrollelement, das die Daten auf bestimmte Weise tabellarisch darstellen soll. Das funktioniert soweit auch recht schön.
Sobald aber der Anwender die Daten auf bestimmte, reproduzierbare Weise umsortieren will, zeigt das Kontrollelement nichts mehr an (bzw. erst wenn man händisch darin herum die Spaltenbreiten ändert).
Es handelt sich um ein reines Darstellungsproblem, denn im Debugger erkennt man, dass die Daten durchaus korrekt vorhanden sind, sie werden nur nicht angezeigt.
Das gehört zu diesen Fehlern, bei denen man selbst als erfahrener Entwickler denken würde: So etwas gibt’s nicht.
Gibt es doch. Ich singlesteppte einen Teil des Codes gemeinsam mit meinem Mitarbeiter, und es war exakt so, wie er es beschrieben hatte.
Wir probierten dann ein paar bewährte Methoden, um das Kontrollelement zu zwingen, sich neu zu zeichnen, aber alles ohne Erfolg.
Die Ursache des Problems könnte bei Windows direkt liegen, ich vermute aber, dass die Kapselung des Frameworks irgendwelche Messages nur unzureichend umgesetzt hat, bzw. die Implemplementierung nicht unterstützt.
Wenn nichts mehr nützt, dann muss ein Workaround her, und sei er auch noch so unelegant.
Wir machen also unter bestimmten Bedingungen das Kontrollelement komplett nieder und setzen es neu auf. Funktioniert bislang einwandfrei, und der Endnutzer muss ja nicht wissen, welche Brachialgorithmen dabei eingesetzt werden.
Ein anderer Mitarbeiter hatte bei einem anderen Programm beim Beenden Probleme mit Speicherlecks und Exceptions wegen Zugriffsverletzungen. Ich setzte mich über eine Stunde mit ihm hin, um seinen Code durchzugehen, fand aber auch nichts auffälliges, so dass ich ihn wieder sich selbst überlassen musste, da ich noch andere Tasks auf meiner Agenda hatte.
Er meldete sich dann am nächsten Tag, dass er den Fehler gefunden hätte. Beim Copy’n’Pasten einer ähnlichen Routine, die er nur an eine andere hatte anpassen wollen, hatte er übersehen, eine Variablendeklaration zu entfernen. So meldete ihm der Compiler nicht, dass das Objekt, auf das die Variable zeigte, gar nicht existierte. Es war nie erzeugt worden. Trotzdem gab es der alte Code frei, was das fehlerhafte Verhalten nach sich zog.
Bei meinen VMs kann ich den Vollbildmodus nicht ausstehen, vor allem, weil ich mir nicht merken kann, welches die Host-Taste ist.
Aber genauso, wie ich probeweise das Datumsformat auf „YMMD“ (man gewöhnt sich tatsächlich daran) gestellt habe, versuchte ich jetzt einmal, eine andere Hosttaste zu benutzen.
Da ich derzeit bei diesem Host eine englische Tastatur hängen hatte (fragt nicht, warum), konfigurierte ich Virtualbox, die rechte ALT-Taste als Host-Taste zu nehmen.
Nun ja – ich nutzte den Vollbildmodus trotzdem nicht, und bald darauf hatte ich auch wieder eine normale deutsche Tastatur.
Nun wollte ich von meiner VM aus auf einen Netzwerkshare zugreifen. Aber es ließ sich kein Backslash eingeben. Nach einigem Herumprobieren und Fluchen, fiel mir dann ein, dass \ ja ALT GR ß ist, und dass ALT RIGHT ja als Host-Taste eingestellt war.
Nachdem ich wieder CTRL RIGHT als Host-Taste konfiguriert hatte, klappte es auch wieder mit dem Backslash in der VM.
„Implemplementierung“, nettes Wort….
LikeLike
Sic!
LikeLike
Das vermisse ich manchmal, Fehlersuche im Quellcode 🙂 besonders schön in fremden schlecht oder nicht dokumentierten.
Da fallen mir ein paar schöne Erlebnisse ein, die sich gut auf meinem Blog machen würden.
Ist doch immer wieder sehr anregend bei dir zu lesen.
VG Dieter
LikeLike
Fehlersuche macht eigentlich nur dann einigermaßen Spaß, wenn man relativ schnell ein Erfolgserlebnis hat.
Ich habe auch schon stunden- oder gar tagelang nach so einem verflixten Käfer gesucht, ohne ihn zu finden. Dann ist das frustrierend und ärgerlich.
Aber solche zähen Fehler sind zum Glück selten.
LikeGefällt 1 Person
Ich habe einen Kollegen, der schreibt soviel Kommentar, dass ich immer denke, es ist ein Tarnnetz, das den Code verbergen soll. Genauso grauenvoll wie schlechter Code.
LikeGefällt 1 Person
Übertriebene Kommentare kann ich auch gar nicht leiden.
Die blähen den Code so auf, dass man vor lauter Kommentaren die einzelnen Codezeilen kaum noch sieht.
Und ständig muss man rauf oder runterscrollen, weil man dann auf einer Editorseite kaum noch relevante, zusammenhängenden Code sieht.
LikeLike
Old-Sack-Splaining des Tages: Die Älteren unter uns erinnern sich noch, daß man AltGr fast immer durch Ctrl+Alt substituieren kann und ein ß notfalls auch per Alt-225 bekommt. Beides allerdings nicht in einer Linux-VM unter Win10, wie ich gerade feststelle.
Verdammter Fortschritt! Als nächstes muß ich noch meine IBM Model M wegwerfen, weil man nicht mehr ohne Windowstasten auskommt. Dabei hat die noch keine 30 Jahre auf den Tastenkappen…
(Tatsächlich ist es aber auch bei mir so, daß ich mir die Benutzung der rechten Ctrl-Taste fast vollkommen abgewöhnt habe, damit ich nicht immer nachdenken muß, ob ich gerade in einer VM bin oder nicht.)
SCNR,
B20
LikeLike
Da ich mir die Codes für Sonderzeichen noch nie merken wollte, nutze ich häufig charmap um spezielle Symbole und Zeichen zu selektieren und ins Clipboard zu kopieren.
Auf den ganzen NUM-Block könnte ich verzichten. Die Tasten brauche ich nie. Und am allerlästigsten ist CAPS LOCK.
LikeLike
breakpoint,
meine Güte, kann man manchmal betriebsblind sein. Danke für den Denkanstoß:
Hostkey auf Caps Lock legen löst gleich zwei Probleme auf einmal!
B20
LikeLike
Auf CAPS LOCK drückt man halt viel zu oft versehentlich, wenn man eigentlich Shift oder Tab meint.
LikeLike
Das US-Tastaturlayout ist großartig! Endlich sind []{}\;/ mal an wirklich sinnvollen Stellen!
LikeLike
Lustig ist es auch, mit einer QWERTY-Tastatur bei eingestelltem deutschen Layout Größer- und Kleinerzeichen einzugeben.
LikeLike
Jup, damit verhau ich mich am meisten, wenn ich mal wechseln muss..
LikeLike
Tastaturen und Codepages … immer wieder eine Falle wert.
LikeLike
Langweilig wird das nie.
LikeLike
Seit CP/M ist dieser Mist schon in den Maschinen. Nun kommt auch noch das große ß…..
LikeLike
Die rechte ALT-Taste – tsts. Das Ding heißt „ALT GR“.
LikeLike
Auf einer deutschen Tastatur schon, auf einer englischen nicht.
Keine Ahnung, wie das bei anderen Tastatur-Layouts ist.
LikeLike
Hm, stimmt sogar. Ich hatte das US-Int-Layout in Erinnerung – da gibt es eine solche AltGR Taste durchaus.
LikeLike
Ich bin nicht alt, noch singe ich im Alt, aber manchmal trinke ich ein Alt.
LikeLike
Pingback: You didn’t Make My Day //1621 | breakpoint
Pingback: Verweißt auf Twitter #ffffff //1815 | breakpoint