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

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.

Sdílejte článek:

Související články

Arduino – proč se osvědčí nejen u neprofesionálů? Arduino Pro – proč bychom měli vsadit právě na toto řešení? Arduino Pro – komu je určeno? Hardwarová platforma Arduino Pro – Arduino Portenta – Arduino MKR a Arduino Pro – Arduino…

Vývojové kity/desky (nebo také development board) jsou velmi populární a každý den nějaký přibude.

Daniel Skopalík sdílel návod, jak použít populární jednodeskový počítač RaspberryPi jako JTAG programátor například ESP32.

Nová generace kutilů, bastlířů (makerů a geeků) Během několika posledních let jsme měli možnost setkat se s učiteli, vedoucími elektrokroužků i s mladými zájemci o elektroniku a moderní technologie.

Jazyk Go vyvinutý společností Google Inc.