2005-09-19 11:42:08 xis napisał:
> Naruszenie ochrony pamięci (Segmentation fault) nie ma nic wspólnego ze sprzętem.
> System operacyjny kontroluje działanie każdego programu tak, by te nie wyszły poza
> zarezerwowany dla siebie obszar pamięci. Czasem błąd programisty sprawia, że program odwołuje
> się do obszaru pamięci o zupełnie nieprawidłowym adresie - trafia w pustkę, albo narusza obszar
> innego programu. System oparacyjny reaguje wtedy dość ostro - ubija taki proces sygnałem SIGSEG,
> a komunikat dostajesz taki jak wspomniałeś.
> Jeśli SegFault występuje w pojedynczych programach, to masz prawo przypuszczać, że błąd tkwi w
> ich kodzie - w takim wypadku pomóc może np. upgrade do nowszej wersji (być może poprawionej).
> Jeśli błąd zdarza się częściej, to może to być przyczyną wadliwej biblioteki - jakiejś części
> wspólnej wszystkich tych programów - np. GTK. Tu również pomóc może upgrade.
> Gorzej jeśli szwankuje wszystko i losowo, wtedy faktycznie możesz mieć problem ze sprzętem i to
> do tego tak wredny problem, że nawet OS nie daje rady go dobrze zdiagnozować.
>
> Istnieje sposób zbadania przyczyny wystąpienia SegFaultów za pomocą debuggera (np. gdb).
> Debugger pokazuje w jakim stanie zmiennych program padł. Niestety jego użycie wymaga pewnego
> doświadczenia w programowaniu i znajomości badanego kodu.
>
> Być może instalowałeś wyżej wymienione programy z binariów (które nie były dobrane do sprzętu
> idealnie - tak jak pisał amdfanatyk), albo kompilowałeś je ze zbyt mocnymi flagami kompilatora.
> Pomóc może ich reinstalacja na różne sposoby i sprawdzanie efektów.
>
> Powodzenia
Wielkie dzieki za informacje, faktycznie upgrade calego systemu pomogl... z wyjatkiem gplflash'a, ale cuz nie mozna miec wszystkiego prawda:)
A co do debugowania... kiedy sprawdzam w ten sposob napisane przezemnie programy zazwyczaj
szybko wylapuje blad... ale w "obcych" idzie niestety znacznie gorzej. Jak narazie sie ucze...
Jezcze raz dziekuje