Satt och försökte hjälpa en snubbe med ett problem rörande Spinners i Android. Tydligen kraschade appen han byggde varje gång man tryckte på Spinnern och valen skulle visas. Enligt stacktracen var det ett NullPointerException, men det som gjorde det hela svårare var att Spinnern faktiskt innehöll minst ett val.
Efter ungefär en trkvarts, timmes felsökande visar det sig att det körs två loopar, baserat på databasresultat. Varje iteration i första loopen lägger in ett val i listan, varje iteration i andra loopen drar ifrån ett antal val i listan. I detta fallet visade det sig att första loopen gjordes med en check
for(int i = 1; i <= list.getsize(); i++) { //Lägg till val }
Den andra loopen använde sig av
for(int i = 0; i < list2.getsize(); i++) { //Dra ifrån val }
Det intressanta i de här looparna är att den första lägger till hela listans resultat + 1. Detta innebar att det hamnat ett null-objekt i listan, som loop två inte kunde ta bort.
Det enda som skvallrade om något kring detta var att skriva ut loggar över vad som inträffade. Det hade tagit ungefär 15 minuter att lösa detta, om man hade börjat direkt med att logga vad som skedde. Så, till alla er som sitter där ute och tror/litar på att ni vet vad er kod gör, _utan_ att se loggarna: Tänk om. Ni har ingen aning.