Stack painting
Vul een stack bij het opstarten met een bekend patroon en kijk later hoeveel daarvan is overschreven.
Een microcontroller zonder MMU heeft geen guard page die protesteert als een stack te ver groeit; hij overschrijft gewoon wat ernaast ligt. Hoe groot een stack moet zijn, is vooraf zelden te berekenen, want interrupts, recursie en bibliotheekaanroepen voegen diepte toe die niemand heeft opgeschreven. Dus meet je het.
De opstartcode "verft" elke stack met een patroon — FreeRTOS gebruikt de byte 0xA5, anderen verkiezen 0xDEADBEEF — en nadat het systeem een tijd heeft gedraaid, scan je vanaf de onderkant naar het eerste woord dat is veranderd. Die afstand is de high-water mark, het diepste punt dat de stack ooit bereikte. FreeRTOS biedt dit aan als uxTaskGetStackHighWaterMark(). Het zegt alleen wat er tijdens de test gebeurde, niet wat het slechtste geval is, dus achteraf wordt er een marge bij opgeteld, meestal onder het slaken van een zucht.