MisterWhite napisał(a):
Sorry, wybacz ale przy całym szacunku nie zgodzę się z Tobą.
Sorry ale ja przy całym szacunku nie zgodzę się z tobą - dlatego, że ty KOMPLETNIE ale to KOMPLETNIE nie rozumiesz co to znaczy podanie kodu ... kompletnie nie rozumiesz co to znaczy podział problemu "NA DWA" ... co to znaczy test jednostkowy ... i zamiast się obrażać - przeczytaj teraz co napiszę, wyciągnij jakieś wnioski i się czegoś naucz proszę
Jeśli masz kod zawierający pierdylion (przepraszam takie żartobliwie określenie) linii kodu - i pojawia ci się taki błąd co do którego nie możesz dojść skąd się bierze - to sprawa dojścia samemu do miejsca skąd on może się brać jest BANALNIE prosta - powtarzam to często w poradnikach, piszę czasem o tym ale albo nie trafiłeś na to albo może nie chciało się oglądać czy poczytać - albo może rzeczywiście nie trafiłeś ....
pomimo to wypada mieć chociaż odrobinę pokory jak się zaczyna zamiast pisać takie rzeczy
a zatem jak mam pierdylion linii kodu to oczywistą rzeczą jest że wrzucenie tego na forum i podpowiedź żeby ktoś znalazł błąd może się wydawać dziwne ... tyle - że ... i teraz skup się, pierwsza metoda.
1. jeśli cały kod to nie tajemnica oczywiście (bo ja szanuję cudzy kod i mogę zrozumieć, że czasem nie jest do prezentacji na forum) ale zakładając, że to nie tajemnica - to wystarczy czasem spakować cały projekt do ZIP'a i wrzucić na forum - to JEST MEGA NAJPROSTSZA i najszybsza droga aby ktoś mógł pomóc - dlatego, że użytkownik forum pobiera projekt, importuje do swojego Eclipsa i z ciekawości odpala ... wtedy ZAPEWNIAM CIĘ, że akurat TAK BANALNY BŁĄD jak brak inkluda jest do wyłapania w 5 sekund prawie przez każdego kto ma już np ciut większe doświadczenie niż ty i nie trzeba tracić na to czasu
ale ok - nie o tym miałem mówić - bo można sobie samemu radzić tylko umiejętnie podzielić projekt na dwie części - a tego NAJCZĘŚCIEJ początkującym nie chce się robić bo twierdzą ... że .... eee tam to nic nie da .... bzdura!
a więc jeśli mam (powtarzam z uporem maniaka) pierdylion linii - uwierz mnie też się czasem to zdarza - bo jak wspominałem czasem głupi nawias klamrowy, czy inklud w niewłaściwym miejscu może podawać komunikaty bardzo mylące ... ale czy to znaczy - że nie można do tego dojść?
NAJPROSTSZA metoda i to ŁOPATOLOGICZNA za to dająca sporą praktykę!
1. kopiuję projekt - jakby kopia zapasowa żeby nie psuć oryginału a na kopii prowadzić doświadczenia "genetyczne"
2. w tym skopiowanym kodzie - na początek aby "podzielić NA DWA" wywalam np połowę funkcji komentując je albo wykluczając z kompilacji połowę plików projektu - tylko proszę nie narzeka mi tu, że to dużo roboty bo wtedy to się zaśmieję w głos
3. puszczam kompilację i patrzę czy jest poprzedni błąd ???????????
.... jest ?
- jeśli jest to BINGO wiem że już badanie połowy programu mam za sobą (tą zakomentowaną) !!!! BINGO ! ... pozostaje tylko 50 % do zbadania
.... nie ma błędu ?
- QURDĘ również BINGO !!!! bo to znaczy, że błąd jest w tej połowie programu którą zakomentowałem !!!!
i spróbuj mi powiedzieć, że to kurdę trudne ? i wolne - to MEGA PRZYŚPIESZA BADANIE - a jest tak proste, że początkującym wydaje się niemożliwe .... SZOK !
-------------------
no dobra - pewnie powiesz - łatwo mi mówić - zostaje 50% do zbadania i co teraz ?
myślisz, że to kłopot ? .... CHŁOPIE - znowu dzielisz NA DWA .... rozumiesz to ?
czyli komentujesz połowę z tej połowy - oczywiście, że z tym komentowaniem trzeba troszkę popracować - bo trzeba wykluczać czasem nie całe funkcje - ale gdy początkujący pisze jeszcze nieumiejętnie program i naparza prawie cały kod w jednym pliku main.c (nie rozumiejąc co to za potężny mechanizm w C, że można dzielić projekt na pliki i jak to później pomaga w czym ???? no właśnie w znajdowaniu problemów panie!) ... więc jak się ma naszprycowaną funkcję main() tryliardem linii kodu bez wyprowadzonych ładnie funkcji to pewnie, że zakomentowanie jakiejś tam połowy może troszkę potrwać i można się namęczyć ale cóż to znaczy - jeśli wiadomo, że człowiek SAM może sobie poradzić ...
Ba! jeśli jest miliard linii to można pójść nawet nieco inną drogą i zamiast kopiować projekt - to stworzyć nowy pusty i wkopiowywać do niego połowę - może być to czasem łatwiejsze niż komentowanie ....
A zatem - po kolejnym podziale NA DWA - tych 50% ..... znowu działa ślicznie technika "WIN WIN" - czyli zawsze jesteś wygrany - niezależnie w której połowie będzie błąd ....
takie podejście i dalsze podziały DRASTYCZNIE przyśpieszają test programu - szczególnie w C ... bo w językach obiektowych przy wielu więcej zależnościach testy jednostkowe bywają dużo bardziej skomplikowane tzn ich projektowanie ale to inna całkiem kwestia
---------------------------------
dlatego zamiast pisać, że się nie zgadzasz - chociaż RAZ spróbuj tej metody - tym bardziej, że piszesz, że sam lubisz eksperymentować a ja napisałem, że to się chwali - tylko trzeba jeszcze starać się nauczyć włączyć pewną najprostszą LOGIGĘ to tych eksperymentów, i tu możesz też pójść dwoma drogami oczywiście - sam wybierz:
1. albo spróbujesz tej metody chcąc wykorzystać metodę uczenia się na cudzych błędach i podpowiedziach jakie techniki można stosować do badania błędów w kodach źródłowych
2. albo upieraj się jak .... i dalej brnij własną drogą, wyważaj głową drzwi - to w sumie też jakieś podejście - tyle, że stracisz mnóstwo czasu a później i tak zrozumiesz, że np ta metoda którą opisałem wyżej i tak jest słuszna i o wiele szybciej doprowadza do celu
podobnie jak to - że WARTO porządnie zadawać pytanie - .... i na koniec
ABSOLUTNIE nie miałem na myśli, żebyś wklejał cały pierdyliard linii kodu bo ja bym wtedy nawet nie zajrzał - bo nie mam czasu a podziwiam kolegów na forum, którzy znajdują czas i nawet na tak zadane pytania reagują - analizują - dopytują - poświęcają kupę własnego czasu - a nieraz na końcu i tak się okazuje, że problem był w stykówce bo kabelek nie stykał ... a czasem też szybko wyłapują błędy
JA ZAWSZE gdy mówię - wklej kod - oczekuję, że ktoś wklei jakiś ostatni fragment po dokonaniu już kilku czy kilkunastu podziałów "NA DWA" i zostało kilka linii - i nadal nie rozumie w czym może być problem - wtedy ciut bardziej doświadczony forumowicz bez zbędnego zadawania dodatkowych pytań czy ciągnięcia autora za przysłowiowy język - potrafi precyzyjnie podpowiedzieć w czym może leżeć problem
teraz jaśniej - czy nadal się nie zgadzasz ?
------------------------ [ Dodano po: 1 minucie ]MisterWhite napisał(a):
W zaistniałej sytuacji kodu już nie podaję.
A po co ? nikomu tu nie zależy aby poobserwować twój kod - jak już to zależy na tym aby pomóc w rozwiązaniu problemu - to też warto mieć na uwadze