Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
public:pb071_eclipse [2011/02/21 11:17]
Petr Svenda [Ladění v Eclipse (Debugging)]
public:pb071_eclipse [2018/02/24 19:10] (aktuální)
Řádek 1: Řádek 1:
 +====== Návody na použití IDE Eclipse ======
 +
 +**Dokument vytvořil Petr Švenda, jakékoli připomínky piště prosím na //​svenda@fi.muni.cz//​**
 +
 +===== Instalace IDE Eclipse - Windows =====
 +  - **TDM-MinGW** (MinGW s aktualní verzí překladače GCC): http://​tdm-gcc.tdragon.net/​download
 +    * sada překladových GNU nástrojů z prostředí UNIXu použitelná pro vytváření spustitelných aplikací na OS MS Windows ​  
 +    * používá gcc verze 4.5.1 (zjistíte pomocí ''​gcc --version''​)
 +    * automaticky přidá do proměnné prostředí PATH cestu k překladači (např. C:​\MinGW\bin)
 +    * obsahuje MinGW DBG 
 +  - **Eclipse IDE for C/C++ Developers** (Eclipse + CDT plugin): http://​www.eclipse.org/​downloads/ ​  
 +  - Restartovat PC
 +
 +===== Základní nastavení =====
 +  * **Klávesové zkratky** - Použití klávesových zkratek pro často používané činnosti výrazně usnadňuje vývoj programu. Namísto hledání položky nebo ikony v menu můžete akci spustit předdefinovanou sekvenci klaves. Defaultní nastavení klavesových zkratek po instalaci Eclipse lze změnit, pokud vám nevyhovuje nebo jste zvyklí na rozložení zkratek z jiného vývojového prostředí. Vhodné rozložení záleží na vaší preferenci, pokud ještě nemáte své oblíbené rozložení,​ tak doporučuji použít rozložení MS Visual Studia. Existuje slušná pravděpodobnost,​ že v budoucích projektech nebo zaměstnání budete v tomto IDE pracovat a navíc Eclipse přímo obsahuje předdefinovanou sadu klávesových zkratek pro Visual Studio. Pomocí nabídky hlavního menu Window->​Preferences se dostanete do nabídky obsahující většinu konfigurovatelných nastavení Eclipse, které nesouvisí přímo s konkrétním projektem. Rozložení klávesových zkratek najdete v nabídce General->​Keys. Nastavte položku //Scheme// na Microsoft Visual Studio. Přímo zde můžete doplnit nebo změnit zkratky pro další akce. Vyberte akci podle jména (název cílové akce, kterou chcete opatřit zkratkou, si předtím najdete v hlavním menu nebo u ikony). Doporučuji nastavit zkratky ještě alespoň pro vkládání breakpointů (Toggle breakpoint, např. F9), rozložení oken při psaní kódu (Show Perspective C/C++, např. Ctr+Shift+C),​ rozložení oken při ladění kódu (Show Perspective Debug, např. Ctr+Shift+D) a další, které budete často používat. ​
 +{{:​public:​e_settings_keymap.png|}}
 +  * **Překladač** - TODO
 +  * **Nastavení pro debugging** - TODO
 +  * Umístit (prázdný) soubor .gdbinit do adresáře projektu (např. C:​\Users\Petr\workspace\HelloWorld\) - při nenalezení souboru vzniká při ladění chyba //.gdbinit: No such file or directory//
 +
 +
 +===== Vytvoření a kompilace nového projektu =====
 +  * Vytvoříme nový C projekt (Alt+Shift+N).
 +{{:​public:​e_newproject.png|}}
 +  * Vyplníme jméno projektu, zvolime typ projektu ANSI C Hello World a MinGW GCC toolchains.
 +{{:​public:​e_newproject2.png|}}
 +  * Vyplníme základní informace o projektu (Basic settings). Není nutné vyplňovat nic zvláštního. Stiskneme tlačítko Finish. ​
 +{{:​public:​e_newproject3.png|}}
 +  * V tuto chvíli máme funkční prototyp programu HelloWorld. V pravé části (Project explorer) je struktura souborů a dalších informací právě vytvořeného projektu Test1 (typicky je zde více než jeden projekt zároveň). Zdrojový kód programu je ve složce //src// pod názvem Test1.c. Po dvojkliku na Test1.c se otevře v prostředním okně editor se zvýrazňováním syntaxe, ve kterém soubor editujete. Ve spodní části je sada záložek, z nichž v tuto chvíli nějdůležitější je //​Console//​. Jde o přepis obsahu příkazové řádky tak, jako kdybyste překlad a samotny program spouštěly v terminálu na Aise. V záložce //Console// se zobrazuje i standardní výstup vašeho programu (to co vypišete na obrazovku) a mužete vepisováním zadávat data pro standardní vstup (pokud je váš program vyžaduje). V tuto chvíli je v ní zobrazem výsledek překladu nově vytvořeného projektu. ​   ​
 +{{:​public:​e_mainWindow.png|}}
 +  * Změníme mírně parametry překladače //gcc// tak, aby odpovídal požadovaným parametrům pro odevzdávání domácích úloh. Pravým myšítkem klikneme na projekt Test1 v okně Project Explorer a vybereme volbu Properties. V záložce C/C++ Build->​Settings->​GCC C Compiler->​Warnings přidáme volbu Pedantic (-pedantic) a v GCC C Compiler->​Miscellaneous přidáme do Other flags textově volbu -std=c99 (pro překlad dle standardu C99). Změny potvrdíme pomocí OK.     
 +{{:​public:​e_buildSettings.png|}}
 +  * Okno Console nyní obsahuje výsledky překladu s dodatečnými parametry. ​    
 +{{:​public:​e_buildCorrected.png|}}
 +  * Zkompilovaný program spustíme pomocí volby Run->​Run. V okně Console se zobrazí výstup programu. ​    
 +{{:​public:​e_run.png|}}{{:​public:​e_run_console.png|}}
 +  * Spustitelný soubor je vytvořen v adresáři projektu na disku. Přesné umístění závisí na vašem nastavení a bude relativní k základní cestě, kterou jste v Eclipse nastavili na začátku jako //​workspace//​ (např. c:​\Users\Petr\workspace\). V případě našeho projektu bude výsledná binárka na cestě c:​\Users\Petr\workspace\Test1\Debug\Test1.exe pro překladovou konfiguraci umožňující ladění (tzv. Debug) a na cestě c:​\Users\Petr\workspace\Test1\Release\Test1.exe pro konfiguraci bez ladících symbolů a se zapnutými optimalizacemi. Mezi překladovými konfiguracemi se přepínáme pomocí ikony na liště (viz. obrázek). Program se typicky vyvíjí v konfiguraci Debug. Poté se překládá v konfiguraci Release pro předání zákazníkovi (POZOR - program je nutné znovu důkladně otestovat, neboť funkční verze Debug nemusí automaticky znamenat funkční verzi Release - typickým problémem je nekorektní zápis za konec pole).
 +{{:​public:​e_debug_release.png|}}
 +
 +===== Ladění v Eclipse (Debugging) =====
 +<note important>​Bude doplněno</​note>​
 +
 +  * **Nastavení argumentů příkazové řádky pro ladění**. Provedeme v nabídce Run->Run configurations->​C/​C++ Application->​Arguments. Základní cesta při laděni je cesta kořene projktu. Pokud tedy chceme poskytnout na vstup cestu k souboru z podadresáře \data, tak napíšeme data\jméno_souboru. ​
 +
 +
 +===== Základní problémy (Troubleshooting) =====
 +  *** Při ladění se zobrazuje hláška //"​mi_cmd_var_create:​ unable to create variable object"//​**. Důvodem je existence proměnných v okně Expressions,​ které již v kódu neexistují (např. zapomenuté z předchozích ladících seancí). Řešením je odstranění neexistujících proměnných z výpisu Watch. Viz. http://​embdev.net/​topic/​129677
 +  * **Při ladění se zobrazuje chybová hláška //.gdbinit: No such file or directory//​**. Řešením je umístit (prázdný) soubor .gdbinit do adresáře projektu (např. C:​\Users\Petr\workspace\HelloWorld\).  ​
 +  * **Při ladění se nezobrazuje v okně Console text vypsaný pomocí puts, printf apod.** Důvodem je výpis až při naplnění interního bufferu pro výstup nebo výskytu operace, která výpis vynutí. Řešením je explicitně vybutit výpis pomocí příkazu //​fflush(stdout);//​ (standardní výstup) resp. //​fflush(stderr);//​ (standardní chybový výstup).
 +  * **Při překladu dojde k chybě a zobrazí se //​...mingw32/​bin/​ld.exe:​ cannot open output file xxx.exe: Permission denied//**. Důvodem je nemožnost zapsat kód programu do spustitelného souboru. Nejčastěji proto, že je soubor xxx.exe právě spuštěn - např. kvůli ladění. Řešením je zkontrolovat v okně Debug seznam spuštěných procesů a ukončit pomocí Run->​Terminate. Pokud nepomůže, tak v seznamu procesů (Task manager na Windows, ps na Unixu) zkontrolovat,​ zda program xxx.exe stále neběží a ukončit jej. Ukončit i process gdb, pokud běží. ​  
 +  * **Potřeba změnit základní adresář (workspace) Eclipse**. ​ Window->​Preferences->​General->​Starup and Shutdown->​Workspaces. Check prompt for workspace at startup. Veškeré nastavení Eclipse k danému workspace je uloženo v adresáři .metadata. Zkopírováním z předchozího do nového workspace si přeneseme nastavení klávesových zkratek, rozložení oken atd. 
 +
  
QR Code
QR Code public:pb071_eclipse (generated for current page)