Głównym powodem braku debugowania za pomocą printf () jest to, że jest on zwykle nieefektywny, nieodpowiedni i niepotrzebny.
Nieefektywne: printf () i kin używają dużo pamięci flash i pamięci RAM w stosunku do tego, co jest dostępne na małym mikrokontrolerze, ale większa nieefektywność polega na rzeczywistym debugowaniu. Zmiana rejestrowanych danych wymaga ponownej kompilacji i przeprogramowania celu, co spowalnia proces. Wykorzystuje również UART, którego można by użyć do wykonywania użytecznej pracy.
Nieodpowiednie: Istnieje tylko tyle szczegółów, które można przesłać przez łącze szeregowe. Jeśli program się zawiesi, nie wiesz dokładnie gdzie, tylko ostatnie zakończone wyjście.
Niepotrzebne: wiele mikrokontrolerów można zdalnie debugować. JTAG lub zastrzeżone protokoły mogą być używane do zatrzymywania procesora, podglądania rejestrów i pamięci RAM, a nawet zmiany stanu działającego procesora bez konieczności ponownej kompilacji. Dlatego debuggery są ogólnie lepszym sposobem debugowania niż instrukcje drukowania, nawet na komputerze PC z dużą ilością miejsca i mocy.
Szkoda, że najpopularniejsza platforma mikrokontrolera dla początkujących, Arduino, nie ma debugera. AVR obsługuje zdalne debugowanie, ale protokół debugWIRE Atmela jest zastrzeżony i nieudokumentowany. Możesz użyć oficjalnej tablicy deweloperów do debugowania z GDB, ale jeśli tak, prawdopodobnie nie martwisz się już Arduino.