C/C++ projekt v programu NetBeans Tento manuál vznikl za pomocí sebraných £lánk· na internetu, zabývajících se problematikou nastavení programu NetBeans. Jako vzor poslouºila verze NetBeans 6.8, prakticky odzkou²eno na Windows 7 32bit. Instalace programu NetBeans 6.8
• Ze zdroje http://java.sun.com/javase/downloads/widget/jdk_netbeans.jsp nain-
stalujete platformu Java s podporou funkcí pro NetBeans dané verze (sta£í za²krtnout souhlas se smluvními podmínkami pro stáhnutí exe instalátoru). Velikost instalátoru je okolo 135 MB, samotná instalace zabere asi 500 MB, na disk se uloºí Java RE a program NetBeans v základní verzi, tedy s pluginy pro Java projekty.
• Spus´te NetBeans. V menu vyberte záloºku Tools a otev°ete sekci Plugins. • V záloºce Available plugins nalezn¥te kategorii C++, za²krtn¥te install a potvr¤te
pod seznamem kliknutím na tla£ítko install. Po potvrzení a souhlasu s podmínkami bude do NetBeans naistalovaná podpora pro projekty C/C++. Restart po instalaci je podmínkou.
Instalace program· pro kompilaci a debug mode
Pro kompilaci a debug mode programu je nezbytné naistalovat do po£íta£e dal²í programy. Existuje celá °ada podp·rného softwaru, pro na²e ú£ely poslouºí programy cygwin, minGW a MSYS [1]. • Stáhn¥te program cygwin ze stránek http://cygwin.com/ do va²eho po£íta£e. In-
stalátor setup.exe naleznete v pati£ce stránky. Jelikoº se jedná o program, jehoº £ásti se spou²tí z p°íkazového °ádku, velmi doporu£uji instalovat do doporu£eného adresá°e C:/cygwin.
Spus´te instalátor setup.exe. P°i instalaci Vám vysko£í chybová hlá²ka o tom, ºe pokud se instalace nepoda°í, je pot°eba si p°e£íst dokumentaci na stránkách http://cygwin.com/ a zkusit nainstalovat nov¥j²í verzi, toto hlá²ení ignorujte. P°i výb¥ru Balík· klikn¥te na Base a Devel tak, aby za poloºkou bylo slovo Install (pon¥kud zvlá²tn¥ pojatý checkbox, nap°. dal²ím kliknutím na Install se balí£ky p°ejmenují na Reinstall, pak na Uninstall a poté zp¥t na Default). Klikn¥te na next. Ignorujte chybové hlá²ení, neod²krtávejte doporu£ení a klikn¥te na next, poté se Vám nainstalují p°islu²né balíky programu cygwin (samotná instalace balík· zabere na disku asi 1,7 GB). 1
• Stáhn¥te program minGW ze stránek http://mingw.org nebo rovnou z URL http://sourceforge.net/project/downloading.php ?group_id=2435&filename=MinGW-5.1.4.exe&a=57946486
Spus´te instalátor MinGW-5.1.4.exe, na update instalátoru zadejte Ne. Odsouhlaste podmínky a nastavte instalaci pro Current package. P°i výb¥ru komponent· za²krtn¥te navíc g++ compiler, neza²krtávejte minGW make, bude se instalovat separátn¥ v balíku MSYS, který nainstalujeme pozd¥ji. Op¥t potvr¤te cestu C:/MinGW, nem¥¬te ji, a nainstalujte MinGW do va²eho po£íta£e. • Stáhn¥te MSYS z adresy http://downloads.sourceforge.net/mingw/MSYS-1.0.10.exe
Spus´te instalátor MSYS-1.0.10, ponechte v²echna výchozí nastavení a spus´te instalaci. Instalátor spustí p°íkazový °ádek, ve kterém potvr¤te písmenem y (Enter), ºe máte nainstalované MinGW. P°i dotazu na cestu k programu zadejte C:/MinGW, je to výchozí cesta k programu, pokud jste jí osobn¥ nep°epsali, pak musíte zadat va²i cestu. Program make se úsp¥²n¥ doinstaluje do C:/MinGW. • Naposled stáhn¥te balík pro instalaci dbg debuggeru z URL http://sourceforge.net/project/downloading.php ?group_id=2435&filename=gdb-6.8-mingw-3.tar.bz2&a=66334146 a nakopírujte (existu-
jící p°epi²te) celý obsah archívu tak, jak je, do adresá°e MinGW ve va²em po£íta£i (sloºka bin ve struktu°e se musí nakopírovat do sloºky bin v MinGW atd.)
• Nastavte cesty do parametru PATH ve va²em po£íta£i
Otev°ete Start -> Control Panel -> System, klikn¥te v levém menu na Advanced system settings a po otev°ení okna klikn¥te dole vpravo na Environment Variables. V System variables nalezn¥te parametr Path, ten editujte a na konec textového °et¥zce p°idejte za st°edník dal²í cesty k soubor·m: C:\cygwin\bin; C:\MinGW\bin;
2
Nastavení kompilace a debuggeru v NetBeans
Po úsp¥²ném nainstalování v²ech pot°ebných balík· m·ºeme p°istoupit k samotnému nastavení programu NetBeans. • Spus´te program NetBeans. • Otev°ete Tools -> Options a p°ejd¥te na záloºku C/C++. • Program automaticky rozpozná nainstalované balí£ky a doplní je do p°íslu²ných nas-
tavení operací.
• Po autamatickém vypln¥ní údaj· programem sta£í kliknout na OK a informace se
uloºí.
Nyní je program NetBeans p°ipraven pro projekty C/C++. V dal²í kapitole si ukáºeme vytvo°ení jednoduchého projektu Hallo World a zkusíme si zkompilovat výstupní soubor. Poté m·ºeme p°ejít k samotnému debugování projektu.
3
Projekt Hallo World v NetBeans
Na p°ikladu si ukáºeme jednoduché vytvo°ení projektu v C/C++ a jeho zkompilování do výstupního souboru/programu. • Otev°eme nový projet File -> New Project, nastavíme kategorii C/C++ a projekt
C/C++ Application
a p°ejdeme na dal²í okno Next. • Nastavíme Název projektu HalloWorld a jako main le halloworld
a dokon£íme kliknutím na Finish. 4
• Otev°el se nám projekt HalloWorld, pokud otev°ete podsloºku Source Files v pro-
jektu, m·ºete otev°ít zdrojový kód hlavního souboru halloworld.cpp, kde je p°ednastavena kostra programu.
• Jako p°iklad kódu Hallo World nám posta£í tato ukázka: #include <stdlib.h> #include <stdio.h> int main(int argc, char** argv) { printf ("Hallo World !!!\n"); return (EXIT_SUCCESS); }
Po spu²t¥ní programu klávesou F6 nebo Run -> Run Main Project se soubor zkompiluje, pod otev°eným souborem halloworld.cpp m·ºete vid¥t detaily probíhající kompilace s výsledkem úsp¥chu/neúsp¥chu. Po zkompilování se otev°e p°íkazový °ádek a spustí se samotný program, v na²em p°ípad¥ se objeví spolu s varováním programu cygwin, ºe cesta k NetBeans není správn¥ napsaná. To je záleºitost Windows a s kompilací nebo spu²t¥ním programu nemá nic spole£ného. V na²em p°ípad¥ je správný výstup napsání textu Hallo World !!! spolu s hlá²kou, jak ukon£it p°íkazový °ádek.
5
Práv¥ jste úsp¥²n¥ zkompilovali sv·j projekt HalloWorld v programu NetBeans. Nyní m·ºeme p°ejít k samotnému debugování programu. Debugování programu Hallo World v NetBeans
Na p°íkladu HalloWorld si ukáºeme debugování projektu v NetBeans. Pro vysv¥tlení jednotlivých úkon· trochu roz²í°íme základní program HalloWorld o pár instrukcí, abychom mohli ukázat jednotlivé kontrolní £ásti debuggeru. Ná² kód m·ºe vypadat nap°. takto: #include <stdlib.h> #include <stdio.h> int main(int argc, char** argv) { int i = 5; // promenna i ma hodnotu 5 char * a = "Ahoj"; // ukazatel na string hodnotu Ahoj printf ("Startuji projekt Hallo World !!!\n"); for (int c = 0; c < i; c++) { printf ("Spoustim vnitrni cyklus s cislem %d a vypisuji %s\n", c + 1, a); } return (EXIT_SUCCESS); }
Nyní m·ºeme p°ejít k samotnému debugování programu, na kterém si ukáºeme základní informace o probíhajícím procesu spu²t¥ného projektu. Nebudu zde popisovat jednotlivé kroky programu, jde o jednoduchý zápis a slouºí p°edev²ím k ukázání a popsání základních prost°edk· debuggeru v programu NetBeans. P°edpokládá se, ºe vyuºití debuggeru je pro uºivatele, kte°í jiº n¥jakou zku²enost s kódem mají, takºe jednoduchému p°íkladu více neº rozumí.
6
• Pro zastavení debug módu je nutné v kódu nastavit tzv. breakpoint, jinak debug
spustí program, který se po spu²t¥ní a vykonání jednotlivých p°íkaz· okamºit¥ ukon£í. V na²em p°ípad¥ dáme breakpoint na °ádek, kde nastavujeme parametr i. Breakpoint nastavíme kliknutím na p°íslu²né £íslo °ádku v programu (pravítko na levé stran¥ zdrojového kódu, kliknutím se °ádek za£ervená, druhým kliknutím breakpoint odstraníte).
• Debugger spustíme kombinací kláves Ctrl + F5 nebo kliknutím na Debug -> Debug
Main Project.
• Po spu²t¥ní by m¥lo vysko£it prázdné okno p°íkazového °ádku, tentokrát bez ºádného
hlá²ení cygwin, a debugger by se m¥l zastavit práv¥ na námi zadaném breakpointu (nyní je obarven zelen¥).
7
• Nyní si vysv¥tlíme jednotlivé poloºky debuggeru pod kódem programu, jsou to:
Watches: sledované prom¥nné. B¥hem debugování si m·ºete nastavit prom¥nné, které chcete sledovat. Nemusíte potom procházet v²echny prom¥nné v seznamu a hledat tu správnou, sta£í pravým tla£ítkem my²i v poli Watches zadat New Watch a napsat do pole jméno parametru, který chceme sledovat. Ten se nám poté zapí²e do seznamu a b¥hem debugování bude ukazovat aktuální hodnotu t¥chto parametr·. Variables: seznam v²ech prom¥nných, které se nastavují v programu. V²imn¥te si, ºe v tomto na²em p°ípad¥ se breakpoint zastavil na denování parametru i, který jiº debugger zaznamenal a má ho p°i°azený v seznamu. P°i skoku na dal²í °ádek se nám do seznamu p°ipí²e i ná² druhý parametr a. Call Stack: tzv. zásobník volání, tj. udrºuje vºdy stálou cestu ve struktu°e tak, jak jsme zrovna v programu zano°ení. Výhodou je poté zpracování výjimek a error· p°i lad¥ní kódu, kde nám tato záloºka ukáºe, kde p°esn¥ a odkud byly zavolány jednotlivé funkce £i procedury. V na²em p°ípad¥ tato záloºka pozbývá významu, ale ve sloºitých programech je nepostradatelným pomocníkem. Breakpoints: seznam na²ich breakpoint· tak, jak jsme si je nastavili v programu. Zde je m·ºeme i povypínat nebo jen schovat, abychom je mohli vyvolat op¥t v p°ípad¥ pot°eby. Output: zde vidíte p°esn¥ to, co program práv¥ d¥lá, zda je zastaven, kdy byl nalezen breakpoint, kdy se program op¥t rozb¥hl. Nehledejte zde výstup programu, ten je v £ase zobrazován v p°íkazovém °ádku, který je spu²t¥n zárove¬ s debuggerem. Zde spí²e naleznete výstupy chyb nebo systémová hlá²ení. Tasks: s debuggerem nemá prakticky nic spole£ného, je to klasický TODO LIST, který vyuºijete pro své poznámky v kódu, ke kterým je pot°eba se vrátit nebo je opravit. • V debuggeru se pohybujeme pomocí tla£ítek, která se nám objevila na hlavní li²t¥ pod
záloºkami.
8
• Základní pohyby v programu jsou:
Krok dovnit° F7: p°ejde na dal²í p°íkaz, pokud se jedná o volání funkce, p°esune se dovnit° dané funkce, kde se zastaví na dal²ím kroku. Tento krok se pouºívá nej£ast¥ji k odlad¥ní problém· v programu. Krok p°es F8: p°ejde na dal²í p°íkaz v po°adí, pokud je ale p°íkazem volání funkce, funkci automaticky zavolá a vrátí její výsledek. Tento krok je vlastn¥ krok v kódu po jednotlivých °ádcích bez procházení vno°ených funkcí a metod. Krok ven F7: vystoupí z vno°eného objektu do objektu nad°azeného, tzn. pokud jsme ve funkci, ukon£í jí a p°esune nás na místo, odkud byla funkce zavolána. Znovurozb¥hnutí debuggeru F5: ukon£í zastavení programu breakpointem a pokra£uje dále, dokud nebude op¥t zastaven. Pokud nemáme ºádný dal²í breakpoint v po°adí, program vede k jeho dokon£ení a ukon£ení debuggeru. Ukon£ení debuggeru Shift + F5: zastavení debuggeru spolu se zastavením programu, program se ukon£í, aniº by do²lo k jeho dokon£ení. • Procházení programu v debug módu, který máme spu²t¥ný, klávesou F7 se p°e-
suneme na °ádek 20. Jsme uvnit° cyklu a vypisujeme na výstup p°íkazové konzole text.
V²imn¥me si výpisu na seznamu Variables jednotlivých prom¥nných. Prom¥nná i typu int má hodnotu 5, prom¥nná a, která je ukazatel typu char, ukazuje na místo v pam¥ti 0x4020a0, kde za£íná námi uloºený °et¥zec Ahoj. Následuje prom¥nná, která byla nastavena v cyklu for, s názvem c a po£áte£ní hodnotou 0. 9
• Výstup programu si m·ºeme postupn¥ kontrolovat v p°íkazovém °ádku. Pokud jsme
se zastavili na °ádku 20, máme na výstupu po£áte£ní v¥tu Startuji projekt Hallo World !!!. Pokud klávesou F7 sko£íme na dal²í °ádek, vypí²e se hlá²ení Spoustim vnitrni cyklus s cislem 1 a vypisuji Ahoj.
Na konci tohoto £lánku umíme nainstalovat program NetBeans a jeho podp·rné balí£ky, nastavit kompilátory pro projekty C/C++ a základní ovládání debuggeru NetBeans pro projekty C/C++. NetBeans umí nejen pracovat s tímto programovacím jazykem, jeho domácí p·dou je jazyk JAVA, ale také PHP £i Ruby.
Reference [1]
Popis instalace podp·rných balík· a program· byl zpracován podle internetového £lánku Conguring the NetBeans IDE for C/C++/Fortran na
http://netbeans.org/community/releases/67/cpp-setup-instructions.html
10