Jistě jste se setkali se situací, kdy jste psali kód pro mikrokontrolér a nějaký výpočet, logická funkce, parsování dat z pole, převod z jednoho formátu do druhého nefungoval tak, jak by měl.
Pokud máte mikrokontrolér a debugger, pak si můžete jednoduše odkrokovat jednotlivé řádky kódu a ve „watch listu“ sledovat změny vámi vybraných promněných.
Pokud ale debugger nemáte, jste odkázání na UART, výpis na LCD nebo to prostě zkusíte a ono to bude nějak fungovat.
Změna kódu, kompilace, nahrání a porovnání výsledků můžete zabrat spoustu času. Pokud ho máte dost, je vám to možná jedno, ale strávit tento čas podobnou „prkotinou“ je naprosto zbytečné a nelogické, když můžete využít nějaký nástroj – třeba Online C kompilátor a debugger. Nemusí se jednat nutně o „online“, klidně si stáhněte Eclipse nebo jiné IDE podporující jazyk C. Pro mě je verze „online“ nejjednodušší.
Online C kompilátorů je celá řada, některé lepší, některé horší, jiné tragické.
Má nejlepší osobní zkušenosti je OnlineGDB .
OnlineGDB
Kompilátor/debugger disponuje klasickým tlačítkem „Run„, které po zmáčknutí spustí celý kód.
V tlačítku „Debug“ se schovává krokování (ladění) kódu. Jak to použít uvidíte dále. Vedle je pak tlačítko „Stop„, které zastaví debug (ladění).
Kód můžete sdílet kamarádům přes tlačítko „Share„, uložit „Save“ a pokud se vám váš formát kódu nelíbí, zmáčknete „Beautify“ a OnlineGDB vám naformátuje kód tak, jak je to běžným zvykem. Nebo se o to alespoň pokusí.
Online kompilátor/debugger OnlineGDB je určen pro Céčko na „počítače“, takže tam nemůžete ovládat jednotlivé periférie, na to jsou pak jiné programy. Tento kompilátor/debugger vám odhalí chybu jazyka C, jak jsem zmínil výše – podmínky, logické funkce, výpočty aj.
Mimojiné, OnlineGDB podporuje i další jazyky – C++, Java, Python, PHP a další.
Níže vidíte příklad použití:
Máme několik proměnných se kterými provádíme aritmetické operace.
Po spuštění kódu tlačítkem „Run“ se spustí celý kód a vy uvidíte výstup kódu v části stránky nazvané „Input„. Tedy – provede se vytvoření proměnných a přiřadí se jim jejich hodnota, poté se proveete několik výpočetů a nakonec se zobrazí výsledek.
Pokud by vaše část kódu nechovala tak, jak předpokládáte, můžete si buď za každým řádkem vypsat proměnné. To byste asi udělali při ladění kódu na Arduino a vypisovali přes UART.
NEBO použijete debugger.
Debug nebo česky ladění je funkce, nástroj, která vám může vypisovat proměnné, registry aj. z mikrokontroléru během jeho běhu.
Buď můžete kód krokovat, program se zastavuje za každým řádkem kódu, pomocí tlačítek „Step over„, „Step into“ – vstoupite do funkce, která (pokud) je na daném řádku.
Druhou možnosti je použít breakpointy, to jsou body, kdy po spuštění kódu se program zastaví až v místě, kde je umístěn breakpoint.
Jak jsem zmínil hned na začátku, nemůžete vzít celý kód například z Arduino a zkompilovat v tomto online C kompilátoru.
Využití tohoto nástroje je zejména ve vyzkoušení problematickách/náročných částí programů, kde se může kód stát nepřehledným – množství navzájem propojiných pointerů, složité podmínky, výpočty, parsování dat z polí (např. GPS/GSM modulu) aj.
Domovská stránka projektu: https://www.onlinegdb.com/
Na videu níže vidíte obě varianty použití debuggeru.