Zgadza się. Dlatego psu na budę debugger softwareowy w roli debuger hardwareowego. To najzwyczajneij zupełnie inne zagadnienie.
Obserwacja z pola bitwy: prawidłowe pisanie kodu minimalizuje potrzebę używania debuggera. Do zera? Nie. Blisko zera? Tak. Mówiąc "pisanie kodu" mam na myśli testowanie go a dopiero potem pisanie. Zwyczajowo waga unit testów znaczaco przekracza wagę kodu produkcyjnego.
Obserwacja z innego pola: debuggery softwareowe nie nadają się do
*rzeczywistych* systemów hardwareowych gdzie istnieją zalezności czasowe. Do tego bezpieczniej jest stosować symulatory logiczne z emulacją cpu i peryferiów. Tylko wtedy nie wiadomo czy bug jest u mnie czy w emulacji. I takie symulatory za darmo się nie rozdają.Ja ten problem rozwiązywałem kiedyś kradnąć rdzeń AVR z projektu MAME i dorabiając ręcznie napisany emulator pewnego peryferium, dzięki czemu udało się namierzyć buga, ale to jednorazowy wyskok, raczej desperacja.
Nie o tym mowa.
W środowisku softwareowym, debugger to normalne narzędzie z łatwo (zazwyczaj) powtarzalnymi przypadkami.
W środowisku hardwareowym jest to narzędzie skrajnie trudne do użycia. Wyobraź sobie debugowanie przez JTAG procesora, który ma wysyłać co milisekundę heartbeat do watchdoga zewnątrznego. Zatrzymujesz go na breakpoincie i jesteś umarty.
Albo symulujesz całość *systemu* hardwareowego i tam debugujesz w komfortowych warunkach, albo masz na głowie niezliczone ilosci problemów z faktem że czas mimo zatrzymania programu pędzi dalej, przerwania się nie obsługują, bufory się przepełniają, ciekłe kryształy się elektrolizują.
gdb to nie jest narzędzie do debugowania w hardware, poza śmiesznie prostymi przypadkami debugowania kodu wysokopoziomowego. Co akurat robi się prawie zawsze na maszynei dev, a nie w hardware.
Zupełnie jak wiele kawałków hardware, używanych codziennie. Ogólnie świat hardware to nic specjalnie pewnego. Więc niejako karę za hobby embedded niech będzie czujnośc, że wszędzie czają się bugi, a te hardwareowe są najweselsze.
Od Arduino jak najdalej. Nie miej wrażenia, że jesli zapytałem o religijnośc poglądów na Arduion, to jestem fanem. To Qpa. Ale pozwole sobie na jeden komplement: mimo wymachiwania pięściami przez 60latków z embedded, wprowadził tylnymi drzwiami C++ do świata uC. Podziękowania się należą, nowe pokolenie programistów embedded będzie dzieki temu bardziej ateistyczne.