Das verflixte Byte

Wer kennt das nicht?

Man programmiert was und irgendwie will es einfach nicht – echt macht genau das Gegenteil vom dem, was es eigentlich sollte.
Im Quellcode kann man keinen Fehler finden, augenscheinlich ist alles richtig – fast.
Heute hat es fast eine Stunde gedauert, bis ich mir selbst auf die Schliche gekommen bin.

Der Code (Javascript) sah in etwa wie folgt aus:

for(var x = 0; x < objs.length; x++) {
if(objs[x].id = myid) {
objs.splice(x, 1);
break;
}
}

Jetzt sieht man es natürlich sofort: = ist eine Zuweisung und wird immer wahr – dadurch wird immer das erste Objekt aus dem Array gelöscht. Richtig wäre ein == gewesen.

Solche Ein-Byte-Fehler passieren (zumindest mir) gerne mal.

Dumm nur, dass man sowas in Javascript nicht sieht. Richtig ärgerlich wird das Ganze dann, wenn man nicht wirklich gut debuggen kann, so zum Beispiel auf einem µC. Für mein aktuelles Miniprojekt (Wiki-Eintrag gibt’s die nächsten Tage) hab‘ ich als Userdebug Software-UART verwendet, Debugwire gibt’s auf dem kleinen ATTiny leider nicht (wobei ich nichtmal die Hardware dafür hab).

Ärgerlich bleibt so eine Zeitverschwendung allemal.

Obwohl es nicht so ganz dazu passt, ein kleiner Link von Robert aus dem IRC: Products with Customer Tags