Sdílejte chiptron.cz na sociálních sítích



RSS feeds

Online C kompilátor a debugger - jak urychlit vývoj vašeho C kódu pro Arduino, RaspberryPi aj.Tisk

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.

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.
10,716,786 návštěv