Produkty Novinky Články Návody Kontakty

Ladění programu v Eclipse

Abychom mohli pohodlně krokovat a nahrávat program přímo z vývojového prostředí, aniž bychom museli ručně psát jakékoli příkazy, musíme si nastavit Eclipse. Využijeme projekt blink-led z popisu konfigurace IDE a do něj si doplníme konfiguraci ladění.
obrázek debugger-openocd-eclipse
Obrázek 1.6 Spuštění OpenOCD
Abychom mohli OpenOCD používat a spouštět z prostředí Eclipse musíme ho přidat do externích programů. Konfigurační okno externích programů otevřeme příkazem menu Run/External tools/External tools configurations... Ve spuštěném dialogovém okně vytvoříme novou konfiguraci tak, že pravým tlačítkem klikneme na položku Program v levé části okna a zvolíme New. V detailu po pravé straně vyplníme do kolonky Name název programu OpenOCD. V poli Location vybereme tlačítkem Browse File System cestu k souboru openocd.exe. V editačním poli Working Directory má být cesta k našemu projektu, kde bude umístěn soubor openocd.cfg. Opět využijeme proměnné Eclipse ${workspace_loc:/blink-led}. Konfiguraci uložíme příkazem Apply a tlačitkem Debug zkusíme spustit program OpenOCD. V okně Console ve spodní části Eclipse uvidíme výpis OpenOCD po startu, který je stejný jako výpis po spuštění z příkazového řádku..
obrázek debugger-gdbhardware-debug-plugin
Obrázek 1.7 GDB Hardware Debugging
OpenOCD z prostředí Eclipse již máme spuštěné, zbývá spustit GDB klienta a začít ladit programy. Důležitým bodem je instalace pluginu, který dokáže komunikovat s gdb klientem CodeSourcery. Budeme postupovat stejně jako v popisu konfigurace IDE, kde jsme instalovali plugin pro kompilaci C/C++ programů. Zvolíme Help/Install new software..., do pole Work with vyplníme adresu zásuvných modulů pro Eclipse IndigoInformationhttp://download.eclipse.org/releases/indigo a stiskneme Enter. Zobrazí se seznam všech komponent, ze kterého vybereme plugin umožňující ladění hardware pomocí GDB příkazů. Zatrhneme položky dle obrázku 1.7 a dále pokračujeme průvodcem až do úplného nainstalování pluginu. Se vším je třeba pro úspěšnou instalaci souhlasit.
obrázek debugger-eclipse-debugger-main
Obrázek 1.8 Panel Main
Vytvoříme si dvě varianty spuštění debuggeru. První varianta nahraje program do paměti, spustí jej a zastaví na začátku funkce main. Druhá varianta pouze program spustí a zastaví na funkci main. Konfiguraci debuggeru začneme v menu Run/Debug configurations... V levé části dialogu klikneme pravým tlačítkem myši na položku GDB Hardware debugging a zvolíme New. Tím vytvoříme nový detail a nazveme jej Download and Debug. Název zapíšeme do pole Name. Ve spodní části dialogového okna klikneme na Select other... a vybereme ze seznamu Standard GDB Hradware Debugging Launcher. Do pole C/C++ Application v panelu s názvem Main 1.8 vyplníme název ELF souboru, který nese ladící informace o programu. Otevřeme okno se všemi projekty tlačítkem Search project a vybereme ELF soubor projektu. Stejně budeme postupovat i v případě pole Project s tím rozdílem, že zde vybíráme cílový projekt.
V panelu Debugger vyhledáme do pole GDB Command cestu ke gdb klientovi pomocí tlačítka Browse. V našem případě je umístění klienta ve standardním umístění CodeSourcery C:\Program Files (x86)\CodeSourcery\Sourcery G++ Lite\bin\arm-none-eabi-gdb.exe. Dále je třeba nastavit pole Host name or IP address na localhost a Port number na hodnotu 3333, což je adresa počítače a port na kterém provozujeme OpenOCD. Ostatní parametry pouze překontrolujeme zda odpovídají obrázku 1.9.
obrázek debugger-eclipse-debugger-panel
Obrázek 1.9 Panel Debugger
Poslední panel, který musíme nakonfigurovat se jmenuje Startup (obr. 1.10). Odstraníme zatrhnutí u všech polí, protože budeme ladění řídit vlastními GDB příkazy a necháme zatrhnutou pouze volbu Load Symbols. Do textového pole Initialization Commands překopírujeme nebo opíšeme GDB příkazy z našeho testu připojení na OpenOCD.
obrázek debugger-eclipse-intialization-commands
Obrázek 1.10 Inicializace debuggeru
Celou konfiguraci uložíme tlačítkem Apply a stiskneme tlačítko Debug. Spustí se sekvence GDB příkazů a program se zastaví na začátku funkce main. Klávesou F8 spustíme pokračování laděného programu, klávesou F5 se krokujeme dovnitř funkce a klávesou F6 krokujeme funkci jako celek. V případě varianty konfigurace debuggeru s názvem Debug only budeme postupovat stejně, ale vypustíme ze seznamu inicializačních GDB příkazů řádek, který nahrává program do paměti mikrokontroléru. Tím se nám laděný program spustí bez opětovného nahrání do paměti. Breakpoint vložíme kliknutím na příslušném řádku v levém pruhu na okraji okna Eclipse. Ladění můžeme také pohodlně spouštět z ikonového menu tlačítkem se znakem brouka (obr. 1.11). Ikonu brouka nemůžeme mačkat přímo, protože Eclipse se potom snaží automaticky spustit jinou konfiguraci debuggeru, ale musíme šipkou rozbalit menu ladění.
obrázek debugger-eclipse-run-debug
Obrázek 1.11 Ikony spouštějící debugging
Vpravo nahoře jsou ikony, které přepínají rozložení oken (perspektivu) v Eclipse a jedno z rozložení oken má název Debug. Toto rozložení je určeno pro ladění programů (obr. 1.12). Primární je okno Debug, kde jsou vidět všechny spuštěné procesy. Máme spuštěny dva procesy a sice OpenOCD a Download and Debug. V tomto okně můžeme procesy ukončit a odstranit pro nové spuštění. Pod oknem Debug vidíme zdrojový kód laděného programu, zastavený na breakpointu. Řádek s breakpointem je označen modrou tečkou a zvýrazněn zeleným pruhem. Tímto způsobem je prezentována aktuální pozice provádění laděného programu.
obrázek debugger-eclipse-debug-perspektive
Obrázek 1.12 Ladění v Eclipse