Jak wszystko debuggować?Metoda James'a Golick'a #wolnenotatki
Metoda James'a Golick'a
Zasada: nic nie niedoskonałe, tylko nie działa.
Problem: Jak znaleźć bug w języku, którego nie znasz? Np. Strona internetowa nie działa. Masz problem z .php i nie znasz się na nim.
1. Znajdź pid (project initiation documentation)
2. Użyj programu Sudo strace-ff-s 2028-p22935.
3. Jak czytać strace output
4. Znajdź błąd / uszkodzenie
8. Napraw błąd #viola
Błąd: zaczynamy naprawiać błędy, sprawdzając kod i pisząc coś nowego, zamiast użyć pomocy (np. programu)
YouTube:
How to Debug Anything by James Golick
Does your code work? Probably not. The libraries you're using
probably don't work either.
Zasada: nic nie niedoskonałe, tylko nie działa.
Problem: Jak znaleźć bug w języku, którego nie znasz? Np. Strona internetowa nie działa. Masz problem z .php i nie znasz się na nim.
Metoda z zastosowaniem programu Sudo strace-ff-s 2028-p22935
Program, który poda ci ścieżki wszystkich twoich system calls (ang. wywołanie systemowe; interface łączący użytkownika z komputerem) wykonywane przez program, na którym pracujesz.2. Użyj programu Sudo strace-ff-s 2028-p22935.
3. Jak czytać strace output
- write(l, "hi\n",3) = 3
- (write to nazwa funkcji) ("hi\n" to argumenty) (3 to return value)
- writev(12, [{"HTTP/1.0 500 Internal Server Err"..., 256},
- {"\37\213\10\0\0\0\0\3", 10},
- {"\3\0", 2}, {"\0\0\0\0\0\0", 8}] = 276
- open("/var/www/db.in.php", 0_RDONLY)
- -1 ENOENT (No such file or directory)
- open("/var/www/index.php", 0_RDONLY) = 13
8. Napraw błąd #viola
Metoda Tradycyjna
Znalezienie buga na cudzej stronie (3 min) vs. znalezienie buga na własnej stronie (1 godzina). Dlaczego tak się dzieje?Błąd: zaczynamy naprawiać błędy, sprawdzając kod i pisząc coś nowego, zamiast użyć pomocy (np. programu)
- Zapomnij wszystko to, co wiesz o swoim kodzie, bo jest po prostu zły.
- Poradź się trzeciej osoby - przekaż jak coś teraz działa a jak powinno działać (do jakiego efektu dążysz).
- Znajdź dobre źródło kodu.
- Patrz się na kod, dopóki to ma sens.
- Zidentyfikuj swój kod - w jakim stoisz punkcie.
- Napraw cokolwiek.
YouTube:
How to Debug Anything by James Golick
Does your code work? Probably not. The libraries you're using
probably don't work either.
Komentarze
Prześlij komentarz