Uvod,gcc,gdb Flashcards
Sta su sistemski softveri?
Program koji ktrolise, upravlja i povezuje pojedinacne hardverske delove racunaskog sistema
Vrste sistemskih softvera?
1) operativni sistem
2) virtuelna masina
3) kompajler
4) punioc
5) asembler
6) linker
7)drajver
Sta su punioci?
Prevose fajl u memoriju i pripremaju ga za rad
Sta su drajveri?
Programi koji omogucavaju drugim programima da rade sa hardverskim jedinicama
Sta su prevodioci (kompajleri)?
Prevode program sa korisnickog jezika na objektini jezik slican masinskom
Sta su asmebleri i povezivaci?
Asembleri su programi koji prevode asmmblerski kod na masinski hod; jedna asemblerska naredba odgovara jednoj masinskoj
Povezivac povezuje sve objektne fajlove u jedan izvrsni
Sta su virtuelne masine?
Stvaraju privid da na jednoj fizickoj masini postoji vise logicnih masina
Kako izgleda proces prevodjenja, koje faze postoje?
1) makroprocesianje
2) kompajliranje
3) asembliranje
4) linkovanje/ povezivanje
Sta radi komanda gcc -save-temps -hello.c -o hello?
Prevodi c fajl u izvrsni fajl i cuva sve privremene fajlove nastale kroz faze prevodjenja
Faza makroprocesiranja?
Ubacuje u osnovni .c fajl neke izmene, koristeci direktive koje stoje uz #:
1) include -> ubacuje biblioteku u fajl
2) define -> menja makroime sa njegovom vrednoscu
Faza kompajliranja?
Korstimo cc1 prevodilac i hello.i fajl prevodimo u asemblerski fajl hello.s
1) gcc -print-prog-name=cc1
/putanja do kompajlera
2) /putanja do cc1 hello.i -s hello.s
Faza asembliranja?
Prevodi asemblerski fajl u objekti fajl
as -hello.s -o hello.o
Sta radi komanda objdump hello.o? I koje dodatke moze da ima?
- Daje podatke o datom objetnom fajlu
-M znaci da pise u intel sintaki
-d znaci da radi desembliranje, objetni fajl je napisao u asmeblerski
-f ispisuje hedere koje imamo
-t daje nam tabelu simbola
Faza povezivanja?
Povezuje sve objekte fajlove u jedan izvrsni fajl,
u ovoj fazi imamo neke objektne fajlove koje povezujemo kako bi program koji stvaramo mogao da se pokrene i izvrsi
Komanda gcc -v hello.c -o hello.o?
Ispisuje koje alate koristimo prilikom prevodjenja
Staticko povezivanje?
Vrsi povezivanje biblioteka odmah u fajl i taj fajl je veci od fajla nastalog dinamickim povezivanjem
gcc -static hello.c -o shello
Dinamicko povezivanje?
U trenutku pekretanja fajl vrsi se povezivanje sa bibliotekama
gcc hello.c -o hello
Komanda gcc -g hello.o hello?
Prevodimo program i uvozimo informacije koje su potrebne da bismo mogli da ga debagujemo
Izvrsavanja pod kontrolom dibagera koristeci 2 prozora?
Otvorimo 2 terminala- u prvom imamo ulaz/izlaz programa, a u drugom zadajemo komande dibageru
-prvi: tty -dobijamo id ovog prozora
/dev/pts/1
-drugi: gdb -tty/dev/pts1 -pokrecemo dibager
-
Aktivacija tui rezima rada dibagera?
ctr-x 1, dodatno mozemo da aktiviramo single key opciju sa ctr-x 9
Komande u dibageru?
1) s-step -> idemo 1 liniju unapred, sa ulaskom u funkciju
2)n-next -> idemo 1 liniju unapred, bez ulaska u funkciju
3)v- info local -> prikaz vrednosti promenljivih
4)f-finish ->izvrsi do izlaska iz tekuce funkcije
5)c-continue ->izvrsavanje do sledeceg breakpointa
6)q -> izlaz iz single key rezima rada
Gdb promena vrednos promenljive, citanje vrednosti promeljive i pronalazak gde smo napustili debagovanje?
1) set var i =4
2) print i
3)where
Dodaci u gcc -nostdlib i -no-pie?
gcc -nostdlib -no-pie -g hello.s -hello
-ne radimo linkovanje sa bibliotekama i ne pravimo pozicione nezavisni kod
Debagovanje asemblerskog koda?
-U tui rezimu otovorimo dadatni prozor koji ispisuje vrednosti procesorskih registara ->komanda: layout regs
winheight regs 20 -> hocemo da nam se ispise prozor od 20 registara
set $rax=5 ->promena vrednosti registra