Introducing
Your new presentation assistant.
Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.
Trending searches
Credo:
1) ufaj intuicjom i sprawdzaj je;
2) szukaj prostych wyjaśnień źródeł buga;
3) pracuj na faktach, komputer to Twój przyjaciel i nie chce wprowadzać Cię w błąd;
4) bądź systematyczny, wytrwały i zachowaj spokój;
5) jeśli kod działał minutę temu, jaka była ostatnia zmiana?
Logiczne:
- OBOB (off by one bug)
- pętla nieskończona :-)
Składniowe:
- zgubienie nawiasu, "end"
- literówki
- błędy w stylu: "=" zamiast "=="
Zasobu:
- niewłaściwa wartość zmiennej
- błąd typu danych
Dostępu:
Żądanie zmiennej bez ustawienia dostępu (ograniczenia w Rails)
Kim jest ten, kto debuguje?
"Dupa" debugging - ewolucja
LEVEL ONE:
napisanie w wybranych miejscach kodu “dupa”
LEVEL TWO:
napisanie "dupa 1", "dupa 2", "dupa 3" w wybranych miejscach.
LEVEL THREE:
napisanie dupa + numer linijki w wybranych miejscach.
6) Zastanów się zanim coś zmienisz,
"shotgun debugging" nie działa.
7) Jeśli znalazłeś inny błąd, który pozornie nie ma związku z błędem, którego szukasz, napraw go.
8) W stylu Sherlocka Holmesa powinieneś móc wyjaśnić jak na drodze poszczególnych kroków doszedłeś do wniosku, że bug jest tam gdzie go szukasz.
9) Bądź krytyczny wobec swoich przekonań na temat kodu.
10) Właściwym pytaniem nie jest dlaczego kod nie działa. Lepszym pytaniem jest:
co aktualnie robi twój kod?
na podstawie 11 zasad debuggingu Nicka Parlante (Stanfod University)
http://www.stanford.edu/class/archive/cs/cs106a/cs106a.1134/handouts/250%20Debugging%20Strategies.pdf
DEDUKCJA!
BYE BUG!
'You know my method. It is founded upon the observation of trifles.'
A) PRÓB I BŁĘDÓW
B) "DUPA DEBUGGING" (I SPRAWDZANIE WARTOŚCI ZMIENNYCH)
C) "GOOGLOWANIE"
D) DEBUGGER!
-The Bascombe Valley Mystery
A) CZĘSTE SPRAWDZANIE KODU
B) TECHNIKA NAJMNIEJSZEGO MOŻLIWEGO KROKU
C) ZAPISYWANIE SWOICH BŁĘDÓW I SPOSOBÓW W JAKI UDAŁO SIĘ JE ROZWIĄZAĆ
D) PISANIE TESTÓW AUTOMATYCZNYCH
E) UŻYWANIE GITA - W RAZIE TOTALNEGO ZABUGOWANIA ;-)
Nieścisłe pisanie?
Przypadkowe zmiany w kodzie?
1) bezpodstawne założenia
2) złe wartości zmiennych
3) nieprawidłowa logika kodu
Filozoficznie mówiąc:
Większa rozdzielczość języka programowania niż myślenia programisty o tym języku.
NIEKTÓRE ZNACZENIA:
1. BŁĄD W KODZIE
2. NIEWYDAJNE ZACHOWANIE PROGRAMU
3. COŚ CO SPRAWIA, ŻE KOD DZIAŁA NIEZGODNIE Z OCZEKIWANIAMI
TESTOWANIE
NP. TEST UNIT; RSPEC; CUCUMBER
Pogłębia rozumienie kodu.
TO JEST W NIM BUG I TRZEBA DEBUGOWAĆ!
ŹRÓDŁA PREZENTACJI
Przy dobrym napisaniu dowodzi, że błędy są.
NAJWIĘKSZA TRUDNOŚĆ POCZĄTKUJĄCEGO...
“testing can reveal the presence of
errors, but never their absence.”
- Edsger Dijkstra