przeciez zrobilem wszystko po kolei nie kumam stary :((
Jak odpalic plik wykonywalny teraz?
simonsoft napisał(a):
ogarne dzieki, tylko nie wiem co to vu.o, zrobilo sie i co dalej?
https://pl.m.wikipedia.org/wiki/Plik_relokowalny
main
to binarka a main.c
zrodlo - nie po to kompilujesz program zeby pozniej go nie odpalac nie? ;)
Wynik jest dobry tak btw?
valgrinda odpal na binarce kompilowanej bez asana
kq napisał(a):
Qt Creator to moje podstawowe IDE do C++ :)
Masz dostęp do danych testowych? Nie odpalałem, ale ten kod wygląda dobrze. Zamiast bawić się z valgrindem, odpal memory sanitizera (
-lasan
do linkera,-fsanitize=address
do kompilatora) i zobacz czy nie narzeka dla przypadków skrajnych - 100, 101 elementów itd.
Zwróć uwagę na ten fragment:
kq napisał(a):
odpal memory sanitizera (
-lasan
do linkera,-fsanitize=address
do kompilatora) i zobacz czy nie narzeka dla przypadków skrajnych - 100, 101 elementów itd.
Testujesz przypadek idealny i działa. Testowarka zapewne ma pełno przypadków granicznych, na których kod się wywala.
Dobra jest progres bo wywalilo mi tone rzeczy, jak to postepowac dalej?
gcc vector_utils.c -ggdb -c -o vu.o
gcc main.c -ggdb -c -o m.o
gcc main.c -ggdb -c -o m.o
A to skąd? Kompiluj i linkuj od razu. Po prostu wywal -fsanitize=address
i -lasan
jak nie chcesz address sanitizera :)
A błąd ze screena - nie wiem, wygląda jakbyś próbował plik nietekstowy kompilować.
Nie wiem jak dodac, mozesz mi napisac co mam wpisac prosze? Nie kumam tego
gcc vector_utils.c -ggdb -c -o vu.o
gcc vu.o main.c -ggdb -o main
I jeszcze cat main.c bo wyglada ze go nadpisales
stivens napisał(a):
gcc vector_utils.c -ggdb -c -o vu.o
gcc vu.o main.c -ggdb -o mainI jeszcze cat main.c bo wyglada ze go nadpisales
ten sam blad wywalilo co screena wrzucilem
napisalem cat main.c i znowu wywalilo cos
To binarka
Jak wpiszesz objdump -d main.c
to zobaczysz kod assemblera - chyba to nie miejsce na niego nie? ;)
Skopiuj main.c jeszcze raz
Dobra poszlo teraz. Co next?
valgrind
stivens napisał(a):
valgrind
valgrind --leak-check=yes --track-origins=yes ./main.c ??
czy
gcc vu.o main.c -ggdb -fsanitize=address -lasan -o -c main ?
valgrind --leak-check=yes --track-origins=yes ./main
Przy czym jak nie wywolasz seg faulta to valgrind moze sypnac tona ostrzezen a moze nic ciekawego nie pokazac i tak bo to prosty kod
Czemu robisz arytmetyke wskaznikow zamiast dostepu tablicowego? Ja z tego powodu na kod nawet nie patrze
stivens napisał(a):
valgrind --leak-check=yes --track-origins=yes
./main
Przy czym jak nie wywolasz seg faulta to valgrind moze sypnac tona ostrzezen a moze nic ciekawego nie pokazac i tak bo to prosty kod
Czemu robisz arytmetyke wskaznikow zamiast dostepu tablicowego? Ja z tego powodu na kod nawet nie patrze
bo mam taki wymog, w sumie nic takiego nie pokazalo, przynajmnie nic co mi pomoze wykryc gdzie jest blad...
odpalilem z -v
Nie no to i tak mowilo ze 0 bledow. Musisz segfaulta striggerowac
stivens napisał(a):
Nie no to i tak mowilo ze 0 bledow. Musisz segfaulta striggerowac
Czyli co konkretnie? :P
W ogole to jest ten histogram nie? Zacznijmy od tego pierwszego programu bez floatow...
stivens napisał(a):
W ogole to jest ten histogram nie? Zacznijmy od tego pierwszego programu bez floatow...
Spoko, ale to juz jutro, ide zaraz spac a jutr znowu bede caly dzien siedzial to jak bedziesz to fajnie. Pozdrawiam
Dobra to jak strigerowac tego segfaulta, co robic?
Testuj przypadki brzegowe. 0 liczb w inpucie, 101 liczb itd
Przetestuj pierwszy program valgrindem bo testowales drugi
stivens napisał(a):
Testuj przypadki brzegowe. 0 liczb w inpucie, 101 liczb itd
Przetestuj pierwszy program valgrindem bo testowales drugi
Mozesz na ta strone wejsc?
http://pp.iis.p.lodz.pl/reports/subsp/16/2112-2112/462/360583-e957c1b8cab84e57/index.html
stivens napisał(a):
Testuj przypadki brzegowe. 0 liczb w inpucie, 101 liczb itd
Przetestuj pierwszy program valgrindem bo testowales drugi
ok zaraz zaczne
Wow, przeciez sprawdzarka Ci pokazuje tresc testow...
Wywołanie:
./main 1 <-- seg fault
stivens napisał(a):
Wow, przeciez sprawdzarka Ci pokazuje tresc testow...
Wywołanie:
./main 1 <-- seg fault
co to znaczy to ./main 1 , ze wywoluje program z 1 parametrem ktory wynosi 1?
Wlasnie wiem, ze tego jest tutaj informacji od cholery, a ja nie wiem jak to optymalnie wykorzystac zeby sprawnie dzialac
./main 1 <-- seg fault
Chyba zle zrozumialem
-8 10 10 -7 9 8 -5 0
-2 8 -10 -1 6 -3 0 -4
0
1 7 4 5 1 7 5 0 5 -4 2 -2 8 9 -2 4 3 -4 4 -5
Ten input powoduje seg faulta