SIGSEGV problem z detekcja

0

przeciez zrobilem wszystko po kolei nie kumam stary :((
Jak odpalic plik wykonywalny teraz?

1
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? ;)

0

screenshot-20190823232051.png

1

Wynik jest dobry tak btw?

valgrinda odpal na binarce kompilowanej bez asana

1
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.

0

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

screenshot-20190824002037.png

1
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ć.

0

Nie wiem jak dodac, mozesz mi napisac co mam wpisac prosze? Nie kumam tego

2

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

0
stivens napisał(a):

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

ten sam blad wywalilo co screena wrzucilem

0

napisalem cat main.c i znowu wywalilo cos
screenshot-20190824003924.png

1

To binarka

Jak wpiszesz objdump -d main.c to zobaczysz kod assemblera - chyba to nie miejsce na niego nie? ;)

Skopiuj main.c jeszcze raz

0

Dobra poszlo teraz. Co next?
screenshot-20190824004852.png

0

valgrind

0
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 ?

2

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

0
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...

screenshot-20190824010418.png

0

odpalilem z -v

screenshot-20190824010727.png

1

Nie no to i tak mowilo ze 0 bledow. Musisz segfaulta striggerowac

0
stivens napisał(a):

Nie no to i tak mowilo ze 0 bledow. Musisz segfaulta striggerowac

Czyli co konkretnie? :P

1

W ogole to jest ten histogram nie? Zacznijmy od tego pierwszego programu bez floatow...

0
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

0

Dobra to jak strigerowac tego segfaulta, co robic?

2

Testuj przypadki brzegowe. 0 liczb w inpucie, 101 liczb itd

Przetestuj pierwszy program valgrindem bo testowales drugi

0
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

0

screenshot-20190824112409.png

screenshot-20190824112440.png

0
stivens napisał(a):

Testuj przypadki brzegowe. 0 liczb w inpucie, 101 liczb itd

Przetestuj pierwszy program valgrindem bo testowales drugi

ok zaraz zaczne

2

Wow, przeciez sprawdzarka Ci pokazuje tresc testow...

Wywołanie:

./main 1 <-- seg fault

0
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

0

./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

1 użytkowników online, w tym zalogowanych: 0, gości: 1