Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: pekfos
Kurs C++

Dlaczego nie działa mój program

[pytanie/odpowiedź] Niniejszy dokument zawiera wskazówki, które ułatwiają samodzielne rozwiązywanie problemów typu: "Napisany program nie działa wcale lub nie działa poprawnie".

Wprowadzenie

Gdyby odpowiedź na pytanie "dlaczego nie działa mój program" była prosta, to nie byłoby na tym forum, w chwili pisania tego tekstu, 21507 tematów. Najlepszym sposobem na błędy jest mieszanka wiedzy, doświadczenia i uporu, w bliżej nieokreślonych proporcjach. Jeśli zadajesz te pytanie, to można się domyślać, że raczej problem w braku wiedzy i doświadczenia, ale jeśli masz trochę uporu, to poniżej znajduje się lista często popełnianych błędów, którą możesz sprawdzić, zanim zadasz pytanie na forum. A gdy już zadasz, to niech chociaż temat nie nazywa się 'Dlaczego mi nie działa program?', bo się pogniewamy..

Jesteś pewien, że powinno działać?

Jeśli eksperymentujesz z kursem, czy książką i piszesz dużo małych programów, upewnij się, że uruchamiasz program, który myślisz, że uruchamiasz.
Jeśli masz założony projekt z wieloma plikami źródłowymi i coś działa podejrzanie, spróbuj zrobić rebuild. Więcej o tym przypadku w » Kurs C++ / FAQNapisany program działa inaczej niż powinien pytanie/odpowiedź

Program się wysypuje?

Jeśli po uruchomieniu programu, lub wykonaniu w nim określonej akcji, program przestaje działać, przejdź do » Kurs C++ / FAQNapisany program wysypuje się pytanie/odpowiedź.

Kompilator generuje ostrzeżenia?

Jeśli program działa nieprawidłowo i masz wyłączone ostrzeżenia - włącz je. W GCC są od tego flagi -Wall i -Wextra. W Visual Studio znajdziesz to w ustawieniach projektu, C/C++/General/Warning Level. Stare powiedzenie mówi, że programista ignoruje ostrzeżenia i zajmuje się tylko błędami. Tak naprawdę programista ignoruje niektóre ostrzeżenia, inne są bardzo przydatne bo wskazują błędy, które czasem ciężko wypatrzeć.
» Kurs C++ / FAQNajczęściej spotykane bugi pytanie/odpowiedź

Co zrobić gdy nic z powyższego nie pomogło

Samodzielne rozwiązywanie problemów jest bardzo ważną umiejętnością, a debugger jest bardzo pomocnym narzędziem do tego celu. Spróbuj prześledzić działanie programu debuggerem od ogółu, do szczegółu - wchodząc w poszczególne funkcje jeśli zauważysz, że zawartość zmiennych po ich wykonaniu jest błędna. Jeśli błąd pojawia się po dłuższym działaniu programu, wypisuj komunikaty diagnostyczne w konsoli, albo z poziomu debuggera. Określenie okoliczności błędu i ich odtwarzanie znacząco ułatwia i przyspiesza odnajdywanie błędów.
» Kurs C++ » Poziom XDebugowanie w Visual Studio 2017 lekcja