Loading presentation...
Prezi is an interactive zooming presentation

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

DEBUGGING

No description
by

Piotr Zientara

on 26 January 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of DEBUGGING

DEBUGOWANIE
Filozofia debugowania
Kim jest ten, kto debuguje?
Historia debugowania
"Dupa" debugging - ewolucja
Undefined variable or method?
Zły typ danych
Śmieci w ustawieniach bazy danych
CO TO JEST BUG?
NIEKTÓRE ZNACZENIA:

1. BŁĄD W KODZIE
2. NIEWYDAJNE ZACHOWANIE PROGRAMU
3. COŚ CO SPRAWIA, ŻE KOD DZIAŁA NIEZGODNIE Z OCZEKIWANIAMI
ALBO ROBAK - INTRUZ W NASZYM
KOMPUTERZE

(ZOB. GRACE HOPPER BUG 1946)
TECHNIKI DEBUGOWANIA


A) PRÓB I BŁĘDÓW

B) "DUPA DEBUGGING" (I SPRAWDZANIE WARTOŚCI ZMIENNYCH)

C) "GOOGLOWANIE"

D) DEBUGGER!
TECHNIKI ZAPOBIEGANIA
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 ;-)
Credo cd.
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?
PROSTE UJĘCIE:


JEŚLI NAPISANY PROGRAM NIE DZIAŁA...
TO JEST W NIM BUG I TRZEBA DEBUGOWAĆ!
Skąd się biorą bugi?
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?
DEDUKCJA!
'You know my method. It is founded upon the observation of trifles.'
-The Bascombe Valley Mystery

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.

na podstawie 11 zasad debuggingu Nicka Parlante (Stanfod University)
http://www.stanford.edu/class/archive/cs/cs106a/cs106a.1134/handouts/250%20Debugging%20Strategies.pdf
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.
TESTOWANIE
NP. TEST UNIT; RSPEC; CUCUMBER
“testing can reveal the presence of
errors, but never their absence.”
- Edsger Dijkstra
Przy dobrym napisaniu dowodzi, że błędy są.
Pogłębia rozumienie kodu.
ŹRÓDŁA PREZENTACJI
BYE BUG!
NAJWIĘKSZA TRUDNOŚĆ POCZĄTKUJĄCEGO...
NAJCZĘSTSZE BŁĘDY POCZĄTKUJĄCEGO
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)

Galeria moich ciekawych błędów
http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111
Full transcript