Problem z wielowątkowością - zawieszanie się aplikacji przy włączonej optymalizacji

Odpowiedz Nowy wątek
2011-08-30 13:09
1

Mam taki problem:
Jest sobie linuxowa aplikacja wielowątkowa GUI (gtk). Na głównym ekranie jest obszar do rysowania, kontrolowany przez zmienną odpowiedniej klasy. Dostęp do tej zmiennej (właściwie to singleton) możliwy jest z wielu wątków na raz, wszystko zabezpieczone mutexami, thread-safe (tak mi się do czasu wydawało). Dostarczam temu obiektowi polecenia (wzorzec projektowy komenda) do wykonania i umieszczam je w kolejce.
Ten obiekt na starcie tworzy sobie swój własny wątek, który co określony czas blokuje mutexy i przetwarza dostarczone komendy, w wyniku czego "coś się dzieje na rysunku".

No i wszystko działa na laptopie (Ubuntu 10.04), żadnych błędów, ale jak już zbuduję projekt z włączoną optymalizacją (niezależnie czy -O1, -O2 czy -O3) i spróbuję uruchomić na maszynie docelowej (słabszy komputer, Knoppix 6.0), to aplikacja się włącza i po pewnym czasie się zawiesza... Włączyłem logi konsolowe, by podejrzeć "na oko" co nie działa. Wątek klasy przerysowującej schemat działa poprawnie, podejrzewam, że to główny wątek (GTK) się w którymś momencie zawiesza :/

Rozumiem, że nikomu raczej się nie chce śledzić tysięcy linii kodu, aby znaleźć przyczynę błędu. Mam więc pytanie: czy zna ktoś jakąś dobrą i w miarę prostą bibliotekę C++ do debugu? Aby miała podstawowe funkcje: wsparcie dla wielowątkowości, śledzenie przebiegu programu itp...

Za wszelkie porady dziękuję.

Pozostało 580 znaków

2011-08-30 13:33
Odpowiedz
Liczba odpowiedzi na stronę

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