[ Príspevkov: 12 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105 | 105
Bydlisko: Košice/Rožň...
NapísalOffline : 07.05.2011 10:49 | Segmentation fault - C

Robim Sokobana v C-cku (podobne Karlovi) a mam uz dost dlhy program a teraz hocico ked dopisem do mainu, aj ked je to spravne zapisane, kompilacia totiz prebehne bez problemov tak potom mi vypise pri spusteni segmentation fault ... co s tym ? co to znamena ?
Diky


Offline

Skúsený užívateľ
Skúsený užívateľ
Segmentation fault - C

Registrovaný: 11.01.09
Prihlásený: 25.04.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 07.05.2011 10:59 | Segmentation fault - C

Najviac pravdepodobne je, ze pracujes so smernikom (zapisujes donho), ktory je NULL. Samozrejme, moze byt viacero dovodov segmentation fault, ale toto je velmi casty pripad. Najlepsie bude, ak pomocou debuggera budes krokovat cely program s tym, ze budes vchadzat do vsetkych tvojich funkcii ( step in alebo podobny nazov ). Tak sa dostanes az do miesta, kde mas chybovy kod.


Offline

Užívateľ
Užívateľ
Segmentation fault - C

Registrovaný: 01.04.10
Prihlásený: 08.10.11
Príspevky: 339
Témy: 0 | 0
NapísalOffline : 07.05.2011 11:29 | Segmentation fault - C

Uz som to vela krat pisal - segfault je jeden z najcastejsich C errorov, bez kodu nemame sancu na to prist.


Offline

Užívateľ
Užívateľ
Segmentation fault - C

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22 | 22
Bydlisko: Zilinska Un...
NapísalOffline : 07.05.2011 13:12 | Segmentation fault - C

Debuger, by ti mal vypisat presny riadok na ktorom nastala chyba, tak tu skopni tu cast kodu a pohneme sa mozno dalej :). Nemusis krokovat kod, staci, ked v debugu nechas spadnut program a on ti vypise podrobne info o chybe.


_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 08.05.2011 14:45 | Segmentation fault - C

to ze ten ked je strasne dlhy, takze asi nikto z vas by ho nekontroloval pretoze mi napise segfault na riadku 33 kde nic nie je, je to prazdny riadok. takze sem neviem dat ani cast kodu, kde by mala byt chyba ... okolo toho riadku 33 su len deklaracie premennych a struktur. No zaujimave, ze uz to nepise a ani som tam takmer nic nezmenil odvtedy.

// pridané po 5 hodinách 29 minútach od posledného príspevku

a zas segmentation fault ... a zas neviem preco ... ach jaj


Offline

Užívateľ
Užívateľ
Segmentation fault - C

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22 | 22
Bydlisko: Zilinska Un...
NapísalOffline : 08.05.2011 15:54 | Segmentation fault - C

Pouzivas tam polia (staticke), new - delete (dynamicke), alebo inu pracu so smernikmi? Je aj to mozne, ze preplnas nejaky buffer, alebo ti v nejakej podmineke zapise do smernika, ktory je NULL. Tazko povedat. Takyto problem, som si vzdy cez debuger odstranil za chvilku, potom nevies pouzivat dubuger. Nik ti neporadi, ked nedas info :).


_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 08.05.2011 20:18 | Segmentation fault - C

uz mi zas nepise segfault, takze je to OK, keby zas zacalo dam sem cast kodu

ale mam teraz este jeden problem, pise mi warningy:

main.c:417: warning: assignment makes pointer from integer without a cast


mam na tom riadku: level = levels_init();

medzi globalnymi premennymi mam:
LEVEL* level;

struktura level:
Kód:
typedef struct level
{
    char name[20];
    char password[20];
    char map[100];
    struct level *nextLevel;
}LEVEL;


a funkcia levels_init() :
Kód:
LEVEL* levels_init(void)
{
    LEVEL* ci, *firstItem;
    firstItem = ci = do_levels("at the beginning", "sokoban", level1);
    ci->nextLevel = do_levels("the next level", "budokan", level2);
    ci = ci->nextLevel;
    ci->nextLevel = do_levels("level 3", "saboteur", level3);
    ci = ci->nextLevel;
    ci->nextLevel = NULL;
    return firstItem;
}


... ako to zmenit aby to bolo OK ? diky


Offline

Užívateľ
Užívateľ
Segmentation fault - C

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22 | 22
Bydlisko: Zilinska Un...
NapísalOffline : 08.05.2011 21:07 | Segmentation fault - C

V tom zdrojaku nie je ani jeden riadok dobry, priradzujes nulove pointre, bez adresy. Preco tie funkcie do_levels() a levels_init() nepresunies do struktury? Vytvor si dalsiu strukturu ako levelManager, kde budes spravovat levely. Este jedna vec, ta funkcia do_levels() alokuje pamat pomocou malloc?


_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 09.05.2011 19:46 | Segmentation fault - C

ano do_levels aj alokuje pamät pomocou malloc a pridava zaznamy do spojkoveho zoznamu

a veru neviem pouzivat debugger, kedze sa len ucim programovat tak som s debuggerom nikdy nerobil ... robim v netbeanse ... dam Debu main project a co mam robit dalej ? ako pomocou debuggera zistim kde mam nieco zle ?

// pridané po 2 hodinách 39 minútach od posledného príspevku

pise mi teraz segmentation fault uz len v pripade, kde mam switch na stlacenu klavesu, mam tam 4 moznosti (case), ked sa stlaci 1-ka vykona sa nieco, ked sa stlaci 2- ka nieco .. atd .. a pri vetve default v tom switchi mam len break; ... ze ak sa nestaci cislo od 1 po 4 ale nejaka ina klavesa tak sa vykona len break, no prave vtedy ked stlacim hocijaku klavesu tak mi vypise segmentation fault

.. ostatne funguju, preto sa mi to zda divne


Offline

Skúsený užívateľ
Skúsený užívateľ
Segmentation fault - C

Registrovaný: 11.01.09
Prihlásený: 25.04.26
Príspevky: 1399
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 09.05.2011 21:39 | Segmentation fault - C

M4rek píše:
vykona sa nieco

A prave to nieco moze byt problem. Ak chces pomoct, musis nam ukazat aspon cast kodu.


Offline

Užívateľ
Užívateľ
Segmentation fault - C

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22 | 22
Bydlisko: Zilinska Un...
NapísalOffline : 09.05.2011 22:11 | Segmentation fault - C

Nepouzivam netbeanse, ale skus tam dat breakpoint, ako je znazornene tu ta modra gulicka. Mal by stacit dvojklik na bocnu listu daneho riadku. Potom to spusti v debagu, program sa ti zastavi na danom bode a potom cez nejake tlacitka mozes krokovat program, step by step :). Skusaj, uc sa :).
http://i.zdnet.com/blogs/Burnette_gwt_M ... kpoint.png


_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 03.02.07
Prihlásený: 25.04.18
Príspevky: 478
Témy: 105 | 105
Bydlisko: Košice/Rožň...
Napísal autor témyOffline : 09.05.2011 22:20 | Segmentation fault - C

diky, uz to mam vyriesene


 [ Príspevkov: 12 ] 


Segmentation fault - C



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Segmentation fault

v Backend

9

323

27.11.2012 19:08

Najiva

V tomto fóre nie sú ďalšie neprečítané témy.

segmentation fault

v Backend

10

1056

12.11.2007 13:19

m@-nX

V tomto fóre nie sú ďalšie neprečítané témy.

QtCreator : Segmentation fault

v Backend

1

423

27.12.2010 19:39

Forty-

V tomto fóre nie sú ďalšie neprečítané témy.

Segmentation fault v C

v Backend

0

408

30.01.2012 19:13

KocuR

V tomto fóre nie sú ďalšie neprečítané témy.

string v C = segmentation fault

v Backend

1

354

05.11.2011 12:01

Fico

V tomto fóre nie sú ďalšie neprečítané témy.

General protection fault

v Windows

0

604

27.08.2008 20:57

misso



© 2005 - 2026 PCforum, edited by JanoF