ПОС/Лаб 4 2016 — разлика између измена
мНема описа измене |
|||
Ред 57: | Ред 57: | ||
all | all | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Задатак 2 === | |||
(4) Користећи ''gdv'', написати следеће команде у фајл ''test/gdb/gdb.txt'': | |||
# Створити извршни програм од кода датог у фолдерима ''src'' и ''include'' | |||
# Поставити бреакпоинт на линију 14 у ''main.c'' фајлу | |||
# 14 <syntaxhighlight lang="c">a = dohvFibonaciBrojeve(n);</syntaxhighlight> | |||
# Покренути програм са параметром 10 | |||
# Ући у функцију ''dohvFibonaciBrojeve'' | |||
# и прочитати вредност ''fib[9]'' када програм стигне до линије 18: | |||
# 18 <syntaxhighlight lang="c">return (int*)fib; </syntaxhighlight> | |||
# Скочити на линију 23 у фајлу маин.ц: | |||
# 23 <syntaxhighlight lang="c">return 0;</syntaxhighlight> | |||
# Завршити програм | |||
# Приказати све бреакпоинт-ове | |||
# Уклонити све бреакпоинт-ове | |||
# Изаћи из дибагера | |||
==== Поставка ==== | |||
[[Категорија:ПОС]] | [[Категорија:ПОС]] | ||
[[Категорија:Лабораторијске вежбе]] | [[Категорија:Лабораторијске вежбе]] |
Верзија на датум 16. мај 2021. у 19:14
Група 3
Задатак 1
Поставка
(6) У фајл test/project/makefile уписати правила за превођење кода датог у фолдерима src и include. У фолдеру obj треба се нађу сви .о фајлови, У project фолдеру треба да се налази извршни фајл под називом program. Правила треба да уклоне непотребне зависности. Користити променљиве, $@, $<, $^ и patsubst где год има смисла.
(4) У makefile додати акције clean и all. clean треба да брише све фајлове који нису .c или .h или makefile (потребно је уклонити и скривене фајлове који имају ~ на крају, а које генерише едитор) all треба да уради поновно формирање свих зависних фајлова без обзира да ли су ажурирани или не (дакле, треба да се опет генеришу сви .о фајлови, као и сам програм) Заштити clean и all акције тако да се увек извршавају.
Решење
Једно од решења које има максимални број бодова:
# makefile
CC = gcc
OBJDIR = ./obj
SRCDIR = ./src
IDIR = ./src/include
CFLAGS = -w -I$(IDIR)
PROGRAM = ../program
SRC = $(wildcard $(SRCDIR)/*.c)
OBJ = $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.o,$(SRC))
DEP = $(patsubst $(SRCDIR)/%.c,$(SRCDIR)/%.d,$(SRC))
$(PROGRAM): $(OBJ)
$(CC) -o $@ $^
$(OBJDIR)/%.o: $(SRCDIR)/%.c | proveridir
$(CC) -o $@ -c $< $(CFLAGS)
$(SRCDIR)/%.d: $(SRCDIR)/%.c
$(CC) -MM $< $(CFLAGS) > $@
include $(DEP)
clean:
rm -rf obj
rm -f $(PROGRAM)
rm -f $(SRCDIR)/*.d
rm -f *~
all: clean $(PROGRAM)
proveridir:
[ -d $(OBJDIR) ] || mkdir -p $(OBJDIR)
.PHONY:
proveridir
clean
all
Задатак 2
(4) Користећи gdv, написати следеће команде у фајл test/gdb/gdb.txt:
- Створити извршни програм од кода датог у фолдерима src и include
- Поставити бреакпоинт на линију 14 у main.c фајлу
- 14
a = dohvFibonaciBrojeve(n);
- Покренути програм са параметром 10
- Ући у функцију dohvFibonaciBrojeve
- и прочитати вредност fib[9] када програм стигне до линије 18:
- 18
return (int*)fib;
- Скочити на линију 23 у фајлу маин.ц:
- 23
return 0;
- Завршити програм
- Приказати све бреакпоинт-ове
- Уклонити све бреакпоинт-ове
- Изаћи из дибагера